我使用实体框架已有两年了,现在有一个小问题。
我将一个实体添加到我的表中,
Entities.dbContext.MyTable.Add(obj1);
好的
然后,我想在MyTable上进行查询,例如
Entities.dbContext.MyTable.Where(.....)
上面的代码将查询数据库中的MyTable。
在saveChanges之前,是否可以查询刚刚添加的值?(obj1)怎么样?
更新
我为什么需要这个?因为,对于我添加的每个新元素,我需要在上一条和下一条记录中编辑一些值(此表中有一个datetime字段)
更新2
假设我必须添加很多对象,但是只有在添加了最后一项之后,我才调用saveChanges。每次添加新项目时,我都会读取其datetime字段,并在数据库中搜索上一条和下一条记录。在这里,我编辑上一个和下一个记录的字段。现在,这里出现了问题:如果我插入另一个项目,例如,下一个项目是“ Obj1”,我必须找到并编辑它,但是由于没有保存更改,所以找不到。现在更清楚了吗?
您应该能够通过更改跟踪器将添加的实体从dbContext中移出,如下所示:
var addedEntities = dbContext.ChangeTracker.Entries()
.Where(x => x.State == EntityState.Added && x.Entity is Mytable)
.Select(x => x.Entity as MyTable)
.Where(t => --criteria--);
var addedEntities = dbContext.ChangeTracker.Entries()
.Where(x => x.State == EntityState.Added && x.Entity is Mytable t && --test t for criteria--)
.Select(x => x.Entity as MyTable);
因为您只查询添加的实体,所以可以将其与
dbContext.MyTable.Where(t => --criteria--).ToList().AddRange(addedEntities);
获取所有相关对象
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句