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); } }