private async Task <object> DoCreateAsync(Type objectType, object criteria, bool isSync) { Server.DataPortalResult result = null; Server.DataPortalContext dpContext = null; try { if (!Csla.Rules.BusinessRules.HasPermission(ApplicationContext, Rules.AuthorizationActions.CreateObject, objectType, Server.DataPortal.GetCriteriaArray(criteria))) { throw new Csla.Security.SecurityException(string.Format( Resources.UserNotAuthorizedException, "create", objectType.Name)); } Reflection.ServiceProviderMethodInfo method; if (criteria is Server.EmptyCriteria) { method = ServiceProviderMethodCaller.FindDataPortalMethod <CreateAttribute>(objectType, null, false); } else { method = ServiceProviderMethodCaller.FindDataPortalMethod <CreateAttribute>(objectType, Server.DataPortal.GetCriteriaArray(criteria), false); } var proxy = GetDataPortalProxy(method); dpContext = new Csla.Server.DataPortalContext(ApplicationContext, GetPrincipal(), proxy.IsServerRemote); try { result = await proxy.Create(objectType, criteria, dpContext, isSync); } catch (AggregateException ex) { if (ex.InnerExceptions.Count > 0) { if (ex.InnerExceptions[0] is Server.DataPortalException dpe) { HandleCreateDataPortalException(dpe, isSync, proxy); } } throw new DataPortalException( string.Format("DataPortal.Create {0}", Resources.Failed), ex, null); } catch (Server.DataPortalException ex) { HandleCreateDataPortalException(ex, isSync, proxy); } } catch { throw; } return(result.ReturnObject); }
private static object Create(Type objectType, object criteria) { Server.DataPortalResult result; MethodInfo method = MethodCaller.GetCreateMethod(objectType, criteria); DataPortalClient.IDataPortalProxy proxy; proxy = GetDataPortalProxy(RunLocal(method)); Server.DataPortalContext dpContext = new Csla.Server.DataPortalContext(GetPrincipal(), proxy.IsServerRemote); OnDataPortalInvoke(new DataPortalEventArgs(dpContext)); try { result = proxy.Create(objectType, criteria, dpContext); } catch (Server.DataPortalException ex) { result = ex.Result; if (proxy.IsServerRemote) { ApplicationContext.SetGlobalContext(result.GlobalContext); } throw new DataPortalException( string.Format("DataPortal.Create {0} ({1})", Resources.Failed, ex.InnerException.InnerException), ex.InnerException, result.ReturnObject); } if (proxy.IsServerRemote) { ApplicationContext.SetGlobalContext(result.GlobalContext); } OnDataPortalInvokeComplete(new DataPortalEventArgs(dpContext)); return(result.ReturnObject); }
/// <summary> /// Create new instance of object. /// </summary> /// <param name="objectType">Type of business object to create.</param> /// <param name="criteria">Criteria object describing business object.</param> /// <param name="context">Data portal context from client.</param> public CreateRequest(Type objectType, object criteria, Csla.Server.DataPortalContext context) { _objectType = objectType; _criteria = criteria; _context = context; }
/// <summary> /// Create new instance of object. /// </summary> /// <param name="objectType">Type of business object to create.</param> /// <param name="criteria">Criteria object describing business object.</param> /// <param name="context">Data portal context from client.</param> public FetchRequest(Type objectType, object criteria, Csla.Server.DataPortalContext context) { _objectType = objectType; _criteria = criteria; _context = context; }
private async Task <object> DoCreateAsync(Type objectType, object criteria, bool isSync) { Server.DataPortalResult result = null; Server.DataPortalContext dpContext = null; try { DataPortal.OnDataPortalInitInvoke(null); if (!Csla.Rules.BusinessRules.HasPermission(Rules.AuthorizationActions.CreateObject, objectType)) { throw new Csla.Security.SecurityException(string.Format( Resources.UserNotAuthorizedException, "create", objectType.Name)); } var method = Server.DataPortalMethodCache.GetCreateMethod(objectType, criteria); DataPortalClient.IDataPortalProxy proxy; proxy = GetDataPortalProxy(objectType, method.RunLocal); dpContext = new Csla.Server.DataPortalContext(GetPrincipal(), proxy.IsServerRemote); DataPortal.OnDataPortalInvoke(new DataPortalEventArgs(dpContext, objectType, criteria, DataPortalOperations.Create)); try { result = await proxy.Create(objectType, criteria, dpContext, isSync); GlobalContext = result.GlobalContext; if (isSync && proxy.IsServerRemote) { ApplicationContext.ContextManager.SetGlobalContext(GlobalContext); } } catch (AggregateException ex) { if (ex.InnerExceptions.Count > 0) { var dpe = ex.InnerExceptions[0] as Server.DataPortalException; if (dpe != null) { HandleCreateDataPortalException(dpe, isSync, proxy); } } throw new DataPortalException( string.Format("DataPortal.Create {0}", Resources.Failed), ex, null); } catch (Server.DataPortalException ex) { HandleCreateDataPortalException(ex, isSync, proxy); } DataPortal.OnDataPortalInvokeComplete(new DataPortalEventArgs(dpContext, objectType, criteria, DataPortalOperations.Create)); } catch (Exception ex) { DataPortal.OnDataPortalInvokeComplete(new DataPortalEventArgs(dpContext, objectType, criteria, DataPortalOperations.Create, ex)); throw; } return(result.ReturnObject); }
/// <summary> /// Create new instance of object. /// </summary> /// <param name="obj">Business object to update.</param> /// <param name="context">Data portal context from client.</param> public UpdateRequest(object obj, Csla.Server.DataPortalContext context) { _object = obj; _context = context; }
private async Task <object> DoFetchAsync(Type objectType, object criteria, bool isSync) { Server.DataPortalResult result = null; Server.DataPortalContext dpContext = null; try { DataPortal.OnDataPortalInitInvoke(null); if (!Csla.Rules.BusinessRules.HasPermission(Rules.AuthorizationActions.GetObject, objectType, Server.DataPortal.GetCriteriaArray(criteria))) { throw new Csla.Security.SecurityException(string.Format( Resources.UserNotAuthorizedException, "get", objectType.Name)); } var method = Reflection.ServiceProviderMethodCaller.FindDataPortalMethod <FetchAttribute>(objectType, Server.DataPortal.GetCriteriaArray(criteria), false); var proxy = GetDataPortalProxy(objectType, method); dpContext = new Csla.Server.DataPortalContext(GetPrincipal(), proxy.IsServerRemote); DataPortal.OnDataPortalInvoke(new DataPortalEventArgs(dpContext, objectType, criteria, DataPortalOperations.Fetch)); try { result = await proxy.Fetch(objectType, criteria, dpContext, isSync); GlobalContext = result.GlobalContext; if (isSync && proxy.IsServerRemote) { ApplicationContext.ContextManager.SetGlobalContext(GlobalContext); } } catch (AggregateException ex) { if (ex.InnerExceptions.Count > 0) { var dpe = ex.InnerExceptions[0] as Server.DataPortalException; if (dpe != null) { HandleFetchDataPortalException(dpe, isSync, proxy); } } throw new DataPortalException( string.Format("DataPortal.Fetch {0}", Resources.Failed), ex, null); } catch (Server.DataPortalException ex) { HandleFetchDataPortalException(ex, isSync, proxy); } DataPortal.OnDataPortalInvokeComplete(new DataPortalEventArgs(dpContext, objectType, criteria, DataPortalOperations.Fetch)); } catch (Exception ex) { DataPortal.OnDataPortalInvokeComplete(new DataPortalEventArgs(dpContext, objectType, criteria, DataPortalOperations.Fetch, ex)); throw; } return(result.ReturnObject); }