/// <summary>This method is used to make sure that client oids and server oids are equal. /// </summary> /// <remarks> /// This method is used to make sure that client oids and server oids are equal. /// <pre> /// When storing an object, the client side does nt know the oid that each object will receive. So the client create /// temporary (sequencial) oids. These oids are sent to the server in the object meta-representations. On the server side, /// real OIDs are created and associated to the objects and to the client side ids. After calling the store on the server side /// The client use the the synchronizeIds method to replace client ids by the right server side ids. /// </pre> /// </remarks> public virtual void SynchronizeIds(NeoDatis.Odb.OID[] clientIds, NeoDatis.Odb.OID [] serverIds) { if (clientIds.Length != clientOids.Count) { throw new NeoDatis.Odb.ODBRuntimeException(NeoDatis.Odb.Core.NeoDatisError.ClientServerSynchronizeIds .AddParameter(clientOids.Count).AddParameter(clientIds.Length)); } NeoDatis.Odb.Core.Server.Layers.Layer2.Meta.ClientNonNativeObjectInfo cnnoi = null; NeoDatis.Odb.Core.Transaction.ICache cache = GetSession().GetCache(); object @object = null; NeoDatis.Odb.OID id = null; NeoDatis.Odb.Core.Transaction.ICrossSessionCache crossSessionCache = NeoDatis.Odb.Impl.Core.Transaction.CacheFactory .GetCrossSessionCache(storageEngine.GetBaseIdentification().GetIdentification()); for (int i = 0; i < clientIds.Length; i++) { id = clientIds[i]; cnnoi = aois[id]; @object = objects[id]; // Server ids may be null when an object or part of an object has been updated. // In these case local objects have already the correct ids if (serverIds[i] != null) { cnnoi.SetOid(serverIds[i]); cache.AddObject(serverIds[i], @object, cnnoi.GetHeader()); } // As serverIds may be null, we need to check it if (NeoDatis.Odb.OdbConfiguration.ReconnectObjectsToSession() && serverIds[i] != null) { crossSessionCache.AddObject(@object, serverIds[i]); } } }
public DefaultInstrumentationCallbackForStore(NeoDatis.Odb.Core.Layers.Layer3.IStorageEngine engine, NeoDatis.Odb.Core.Trigger.ITriggerManager triggerManager, bool isUpdate ) : base() { this.engine = engine; this.triggerManager = triggerManager; this.isUpdate = isUpdate; // Just for junits if (engine != null) { this.crossSessionCache = NeoDatis.Odb.Impl.Core.Transaction.CacheFactory.GetCrossSessionCache (engine.GetBaseIdentification().GetIdentification()); } }
public DefaultInstrumentationCallbackForStore(NeoDatis.Odb.Core.Layers.Layer3.IStorageEngine engine, NeoDatis.Odb.Core.Trigger.ITriggerManager triggerManager, bool isUpdate ) : base() { this.engine = engine; this.triggerManager = triggerManager; this.isUpdate = isUpdate; // Just for junits if (engine != null) { this.crossSessionCache = NeoDatis.Odb.Impl.Core.Transaction.CacheFactory.GetCrossSessionCache (engine.GetBaseIdentification().GetIdentification()); } }