加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 仅添加但未保存的值的实体框架查询

发布时间:2020-12-15 08:44:24 所属栏目:百科 来源:网络整理
导读:我在几年内使用Entity Framework,现在我遇到了一些问题. 我将一个实体添加到我的表中 Entities.dbContext.MyTable.Add(obj1); 好的 然后,我想在MyTable上查询,比如 Entities.dbContext.MyTable.Where(.....) 上面的代码将在db中查询我的MyTable. 还有一种方
我在几年内使用Entity Framework,现在我遇到了一些问题.

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

Entities.dbContext.MyTable.Add(obj1);

好的

然后,我想在MyTable上查询,比如

Entities.dbContext.MyTable.Where(.....)

上面的代码将在db中查询我的MyTable.

还有一种方法可以在saveChanges之前查询刚刚添加的值吗? (obj1)怎么样?

UPDATE

我为什么需要这个?因为,对于我添加的每个新元素,我需要编辑上一个和下一个记录中的一些值(此表中有一个datetime字段)

UPDATE2

假设我必须添加很多对象,但只在添加最后一项后才调用saveChanges.每次添加新项目时,我都会读取其日期时间字段,并在数据库中搜索上一个和下一个记录.在这里,我编辑前一个和下一个记录的字段.现在,问题是:如果我插入另一个项目,例如,下一个项目是“Obj1”,我必须找到并编辑它,但我找不到它,因为我没有保存我的更改.现在更清楚了吗?

解决方法

您应该能够通过更改跟踪器从dbContext中获取添加的实体,如下所示:
var addedEntities = dbContext.ChangeTracker.Entries()
   .Where(x => x.State == EntityState.Added && x.Entity.GetType().Name == "MyTable")
   .Select(x => x.Entity as MyTable);

因为您只查询添加的实体,所以可以将其与

dbContext.MyTable.Where(x => -criteria-).ToList().AddRange(addedEntities);

获取所有相关对象

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读