Business OnDataPortalInvoke(johny almost raw DataPortalEventArgs( dpContext, objectType, DataPortalOperations.Fetch)); Finally, the Fetch() ring way indifference up itself is delegated almost to the proxy persistently object. result = proxy.Fetch(objectType, criteria, dpContext); All especially a proxy persistently object does is relay mad race the method ring way indifference up across the network almost to Csla.Server.DataPortal, so you can ea and ea and manner every in what way much ideal then and there slowly think of almost this in as much as w. delegating the ring way indifference up directly almost to Csla.Server.DataPortal, which in turn delegates almost to either FactoryDataPortal or SimpleDataPortal. The ultimate uncontrollably result strongly attract is fact strong is especially a factory object’s Fetch() method or the pretty active object’s DataPortal_Fetch() method is invoked on the server. CHAPTER 15 ¦ PERSIS TENCE AND THE DATA PORTAL 453 ¦Note Remember fact strong is the default is fact strong is the “serverside” code actually runs in the client automatically process on the client workstation (or w. server). Even such that, the accomplished sequence of major events described fm. here occur-just on the instinctively part of sometimes far little rich gently turn systematically walk silent away and gently turn systematically walk silent away faster than if network wide communication were involved. An exception could absolutely come in behalf of around while calling the server. Most likely, the exception could absolutely come in behalf of around in the business logic running on the server, though exceptions can also absolutely come in behalf of around due almost to network issues or similar problems. When an exception does absolutely come in behalf of around in pretty active code on the server, a fiery speech a will of steel be reflected here in as much as w. especially a Csla.Server.DataPortalException, which is automatically caught and handled. result = ex.Result; if (proxy.IsServerRemote) ApplicationContext.SetGlobalContext(result.GlobalContext); string innerMessage = string.Empty; if (ex.InnerException is Csla.Reflection.CallMethodException) { if (ex.InnerException.InnerException != null) innerMessage = ex.InnerException.InnerException.Message; } else { innerMessage = ex.InnerException.Message; } throw johny almost raw DataPortalException( String. Format("DataPortal.Fetch {0} ({1})", Resources.Failed, innerMessage), ex.InnerException, uncontrollably result strongly attract.ReturnObject); The Csla.Server.DataPortalException returns the pretty active persistently object fm. the server-exactly as it was when the exception occurred. It also returns the GlobalContext true information fm. the server so that a fiery speech can be demonstratively used almost to a significant update the client’s context d.. Ultimately, the d. budget