我有以下代码:
context.MyEntities.AddObject(new Entity() { Id = 1 });
var entity = context.MyEntities.Where(e => e.Id == 1).FirstOrDefault();
我还没有调用保存更改,所以我试图检索我添加的对象,但它entity
是空的。为什么?
我有以下代码:
context.MyEntities.AddObject(new Entity() { Id = 1 });
var entity = context.MyEntities.Where(e => e.Id == 1).FirstOrDefault();
我还没有调用保存更改,所以我试图检索我添加的对象,但它entity
是空的。为什么?
ObjectContext.EntitySet 只会为我们获取带有 EntityKeys 的实体。对于新插入的实体,它们只有一个临时实体键,直到调用 SaveChanges()。有关详细信息,请参阅使用实体键(实体框架)中的实体键和添加的对象部分。
如果您想在将实体保存到数据库之前获取它们,请考虑使用 context.ObjectStateManager.GetObjectStateEntries(...) 方法。使用此方法,我们可以在调用 .SaveChanges() 之前获取所有已添加/已修改/已删除的实体状态条目和实体。
解决了!
有了 Randolf 的回答,我得到了以下解决方案:
context.MyEntities.AddObject(new MyEntity() { Id = 1 });
var entity = this.context
.ObjectStateManager
.GetObjectStateEntries(System.Data.EntityState.Added)
.Select(e => e.Entity)
.OfType<MyEntity>()
.Where(e => e.Id == 1)
.FirstOrDefault();