protected override IEnumerable <IPersistenceObject> ExecuteServerCall(ZetboxContextImpl ctx, IEnumerable <IPersistenceObject> objectsToSubmit, IEnumerable <ObjectNotificationRequest> notificationRequests) { IEnumerable <IPersistenceObject> changedObjects; List <IStreamable> auxObjects; Result = ctx.proxy.InvokeServerMethod( ctx, ctx.GetInterfaceType(obj), obj.ID, name, retValType, parameterTypes, parameter, objectsToSubmit, notificationRequests, out changedObjects, out auxObjects); if (Result != null && Result.GetType().IsIPersistenceObject()) { Result = ctx.AttachRespectingIsolationLevel((IPersistenceObject)Result); } else if (Result != null && Result.GetType().IsIList() && Result.GetType().FindElementTypes().Any(t => t.IsIPersistenceObject())) { var lst = (IList)Result; for (int i = 0; i < lst.Count; i++) { lst[i] = ctx.AttachRespectingIsolationLevel((IPersistenceObject)lst[i]); } } if (auxObjects != null) { foreach (IPersistenceObject auxObj in auxObjects) { ctx.AttachRespectingIsolationLevel(auxObj); } } return(changedObjects); }
internal List <IDataObject> GetListOfCall(int ID, string propertyName) { ResetState(); List <IStreamable> auxObjects; List <IDataObject> serviceResult = _proxy.GetListOf(_context, _type, ID, propertyName, out auxObjects).ToList(); List <IDataObject> result = new List <IDataObject>(); foreach (IDataObject obj in serviceResult) { result.Add((IDataObject)_context.AttachRespectingIsolationLevel(obj)); } foreach (IPersistenceObject obj in auxObjects) { _context.AttachRespectingIsolationLevel(obj); } _context.PlaybackNotifications(); return(result); }