private async Task <object> Create(System.Type objectType, bool hasParameters, params object[] parameters) { var criteria = DataPortal <object> .GetCriteriaFromArray(parameters); DataPortalTarget obj = null; var eventArgs = new DataPortalEventArgs(null, objectType, criteria, DataPortalOperations.Create); try { obj = new DataPortalTarget(ApplicationContext.DataPortalActivator.CreateInstance(objectType)); ApplicationContext.DataPortalActivator.InitializeInstance(obj.Instance); obj.Child_OnDataPortalInvoke(eventArgs); obj.MarkAsChild(); obj.MarkNew(); await obj.CreateChildAsync(criteria).ConfigureAwait(false); obj.OnDataPortalInvokeComplete(eventArgs); return(obj.Instance); } catch (Exception ex) { try { if (obj != null) { obj.Child_OnDataPortalException(eventArgs, ex); } } catch { // ignore exceptions from the exception handler } object outval = null; if (obj != null) { outval = obj.Instance; } throw new Csla.DataPortalException( "ChildDataPortal.Create " + Properties.Resources.FailedOnServer, ex, outval); } finally { object reference = null; if (obj != null) { reference = obj.Instance; } ApplicationContext.DataPortalActivator.FinalizeInstance(reference); } }