实体框架查询刚刚添加但未保存的值

皮耶罗·阿尔贝托(Piero Alberto)

我使用实体框架已有两年了,现在有一个小问题。

我将一个实体添加到我的表中,

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--);

或者在c#7.0中使用带有模式匹配类型测试

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章