C# · 1月 13, 2022

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

我在几年内使用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);

获取所有相关对象