示例#1
0
 public void Add <T>(T entity) where T : class
 {
     if (!IsAttached(entity))
     {
         EntityEntries.Add(new EntityEntry(entity, EntityState.Added));
     }
 }
示例#2
0
 public IQueryable <T> FindAll <T>() where T : class
 {
     return(CreateQueryable(EntityEntries
                            .Where(x => (x.State & EntityState.Added) == 0 && (x.State & EntityState.Detached) == 0)
                            .Select(x => x.Instance)
                            .OfType <T>()));
 }
示例#3
0
 public T Find <T>(object id) where T : class
 {
     return(EntityEntries
            .Select(x => x.Instance)
            .OfType <T>()
            .FirstOrDefault(x => HasEntityId(x, id)));
 }
示例#4
0
 public Task <T[]> FindAllAsync <T>(CancellationToken cancellationToken = default(CancellationToken)) where T : class
 {
     return(Task.FromResult(EntityEntries
                            .Where(x => (x.State & EntityState.Added) == 0 && (x.State & EntityState.Detached) == 0)
                            .Select(x => x.Instance)
                            .OfType <T>()
                            .ToArray()));
 }
示例#5
0
        public virtual void Remove <T>(T entity) where T : class
        {
            EntityEntry entry = EntityEntries.FirstOrDefault(x => x.Instance == entity);

            if (entry != null)
            {
                entry.State = EntityState.Deleted;
            }
        }
        public IDbEntityEntry <T> Entry <T>(T entity) where T : class
        {
            var entry = EntityEntries.FirstOrDefault(x => x.Instance == entity);

            if (entry == null)
            {
                EntityEntries.Add(new EntityEntry(entity, EntityState.Detached));
            }

            return(new InMemoryDbEntityEntry <T>(entry));
        }
        public IDbEntityEntry Entry(object entity)
        {
            var entry = EntityEntries.FirstOrDefault(x => x.Instance == entity);

            if (entry == null)
            {
                EntityEntries.Add(new EntityEntry(entity, EntityState.Detached));
            }

            return(new InMemoryDbEntityEntry(entry));
        }
示例#8
0
        public void SetEntityState <T>(T entity, EntityState state) where T : class
        {
            EntityEntry entry = EntityEntries.FirstOrDefault(x => x.Instance == entity);

            if (entry == null)
            {
                EntityEntries.Add(new EntityEntry(entity, state));
            }
            else
            {
                entry.State = state;
            }
        }
示例#9
0
 public virtual void SaveChanges()
 {
     foreach (EntityEntry entry in EntityEntries.ToList())
     {
         if ((entry.State & EntityState.Added) != 0 || (entry.State & EntityState.Modified) != 0)
         {
             entry.State = EntityState.Unchanged;
         }
         else if ((entry.State & EntityState.Deleted) != 0)
         {
             EntityEntries.Remove(entry);
         }
     }
 }
示例#10
0
 public IEnumerable <IDbEntityEntry> Entries()
 {
     return(EntityEntries.Select(x => new InMemoryDbEntityEntry(x)));
 }
示例#11
0
 public Task <T> FirstOrDefaultAsync <T>(Expression <Func <T, bool> > predicate, CancellationToken cancellationToken = default(CancellationToken)) where T : class
 {
     return(Task.FromResult(EntityEntries.Select(x => x.Instance).OfType <T>().FirstOrDefault(predicate.Compile())));
 }
示例#12
0
 public T First <T>(Expression <Func <T, bool> > predicate) where T : class
 {
     return(EntityEntries.Select(x => x.Instance).OfType <T>().First(predicate.Compile()));
 }
示例#13
0
 public Task <T> GetAsync <T>(object id) where T : class
 {
     return(Task.FromResult(EntityEntries.Select(x => x.Instance).OfType <T>().First(x => HasEntityId(x, id))));
 }
示例#14
0
 public bool IsAttached <T>(T entity) where T : class
 {
     return(EntityEntries.Any(x => x.Instance == entity && (x.State & EntityState.Detached) != 0));
 }
示例#15
0
 public EntityState GetEntityState <T>(T entity) where T : class
 {
     return(EntityEntries.FirstOrDefault(x => x.Instance == entity)
            ?.State ?? EntityState.Detached);
 }
示例#16
0
 public IEnumerable <T> FindAllWithAdded <T>() where T : class
 {
     return(EntityEntries
            .Select(x => x.Instance)
            .OfType <T>());
 }