Esempio n. 1
0
        public async Task <DataPortalResult> Delete(Type objectType, object criteria, DataPortalContext context, bool isSync)
        {
            DataPortalTarget obj = null;
            var eventArgs        = new DataPortalEventArgs(context, objectType, criteria, DataPortalOperations.Delete);

            try
            {
                obj = ApplicationContext.CreateInstanceDI <DataPortalTarget>(ApplicationContext.CreateInstance(objectType));
                Activator.InitializeInstance(obj.Instance);
                obj.OnDataPortalInvoke(eventArgs);
                await obj.DeleteAsync(criteria, isSync);

                obj.ThrowIfBusy();
                obj.OnDataPortalInvokeComplete(eventArgs);
                return(new DataPortalResult {
                    ApplicationContext = ApplicationContext
                });
            }
            catch (Exception ex)
            {
                try
                {
                    obj.OnDataPortalException(eventArgs, ex);
                }
                catch
                {
                    // ignore exceptions from the exception handler
                }
                throw DataPortal.NewDataPortalException(
                          ApplicationContext, "DataPortal.Delete " + Resources.FailedOnServer,
                          new DataPortalExceptionHandler(ExceptionInspector).InspectException(objectType, obj, null, "DataPortal.Delete", ex),
                          null);
            }
            finally
            {
                object reference = null;
                if (obj != null)
                {
                    reference = obj.Instance;
                }
                Activator.FinalizeInstance(reference);
            }
        }