コード例 #1
0
 /// <summary>
 /// lookup or store an object in the 'live object cache'.
 /// Example:
 /// To store Product with ProductID=1, we use the following IdentityKey:
 ///  IdentityKey{Type=Product, Keys={1}}
 /// </summary>
 /// <param name="key"></param>
 /// <returns></returns>
 public object this[IdentityKey key]
 {
     get
     {
         object o;
         lock (entities)
             entities.TryGetValue(key, out o);
         return o;
     }
     set
     {
         lock (entities)
             entities[key] = value;
     }
 }
コード例 #2
0
 /// <summary>
 /// Registers an entity to be watched
 /// </summary>
 /// <param name="entity"></param>
 /// <param name="identityKey"></param>
 public void RegisterToWatch(object entity, IdentityKey identityKey)
 {
 }
コード例 #3
0
 /// <summary>
 /// Finds entity by key (PK)
 /// </summary>
 /// <param name="identityKey"></param>
 /// <returns></returns>
 public EntityTrack FindByIdentity(IdentityKey identityKey)
 {
     return null;
 }
コード例 #4
0
ファイル: EntityTracker.cs プロジェクト: nlhepler/mono
 /// <summary>
 /// Finds entity by key (PK)
 /// </summary>
 /// <param name="identityKey"></param>
 /// <returns></returns>
 public EntityTrack FindByIdentity(IdentityKey identityKey)
 {
     EntityTrack entityTrack;
     entitiesByKey.TryGetValue(identityKey, out entityTrack);
     return entityTrack;
 }
コード例 #5
0
ファイル: EntityTracker.cs プロジェクト: nlhepler/mono
 /// <summary>
 /// Registers an entity to be watched
 /// </summary>
 /// <param name="entity"></param>
 /// <param name="identityKey"></param>
 public void RegisterToWatch(object entity, IdentityKey identityKey)
 {
     var entityTrack = FindByReference(entity);
     if (entityTrack == null)
     {
         entityTrack = FindByIdentity(identityKey);
         if (entityTrack != null)
             throw new System.Data.Linq.DuplicateKeyException(entity);
         entityTrack = new EntityTrack(entity, EntityState.ToWatch) { IdentityKey = identityKey };
         entities.Add(entityTrack);
         entitiesByKey[identityKey] = entityTrack;
     }
     else
     {
         // changes the state of the current entity
         switch (entityTrack.EntityState)
         {
         case EntityState.ToInsert:
             entityTrack.EntityState = EntityState.ToWatch;
             entityTrack.IdentityKey = identityKey;
             entitiesByKey[identityKey] = entityTrack;
             break;
         // watched entities should not be registered again
         case EntityState.ToWatch:
         case EntityState.ToDelete:
             throw new InvalidOperationException();
         default:
             throw new ArgumentOutOfRangeException();
         }
     }
 }
コード例 #6
0
 public void Remove(IdentityKey key)
 {
     lock (entities)
         entities.Remove(key);
 }