using System; namespace Csla.DataPortalClient { /// /// Implements a data portal proxy to relay data portal /// calls to an application server hosted in COM+. /// public abstract class EnterpriseServicesProxy : DataPortalClient.IDataPortalProxy { /// /// Override this method to return a reference to /// the server-side COM+ (ServicedComponent) object /// implementing the data portal server functionality. /// protected abstract Server.Hosts.EnterpriseServicesPortal GetServerObject(); /// /// Called by to create a /// new business object. /// /// Type of business object to create. /// Criteria object describing business object. /// /// object passed to the server. /// public virtual Server.DataPortalResult Create(Type objectType, object criteria, Server.DataPortalContext context) { Server.Hosts.EnterpriseServicesPortal svc = GetServerObject(); try { return svc.Create(objectType, criteria, context); } finally { if (svc != null) svc.Dispose(); } } /// /// Called by to load an /// existing business object. /// /// Type of business object to retrieve. /// Criteria object describing business object. /// /// object passed to the server. /// public virtual Server.DataPortalResult Fetch(Type objectType, object criteria, Server.DataPortalContext context) { Server.Hosts.EnterpriseServicesPortal svc = GetServerObject(); try { return svc.Fetch(objectType, criteria, context); } finally { if (svc != null) svc.Dispose(); } } /// /// Called by to update a /// business object. /// /// The business object to update. /// /// object passed to the server. /// public virtual Server.DataPortalResult Update(object obj, Server.DataPortalContext context) { Server.Hosts.EnterpriseServicesPortal svc = GetServerObject(); try { return svc.Update(obj, context); } finally { if (svc != null) svc.Dispose(); } } /// /// Called by to delete a /// business object. /// /// Criteria object describing business object. /// /// object passed to the server. /// public virtual Server.DataPortalResult Delete(object criteria, Server.DataPortalContext context) { Server.Hosts.EnterpriseServicesPortal svc = GetServerObject(); try { return svc.Delete(criteria, context); } finally { if (svc != null) svc.Dispose(); } } /// /// Get a value indicating whether this proxy will invoke /// a remote data portal server, or run the "server-side" /// data portal in the caller's process and AppDomain. /// public virtual bool IsServerRemote { get { return true; } } } }