使用 Entity Framework ,我有一个名为 WorkSet 的表。我向其中添加一个项目,如下所示:
_entity.WorkSet.AddObject( new WorkSet() { Name = "Something" } );
在此之后查询表时,我没有收到任何结果。
_entity.WorkSet.Count() == 0 // always true
也就是说,直到我调用 SaveChanges。我理解为什么这是它的工作方式,但我想知道如何在通过 SaveChanges 将它们保存到数据库之前查看实体中的更改。我希望这是一个可以快速解决的简单问题。谢谢!!
请您参考如下方法:
_entity.WorkSet 实现了IQueryable,因此调用Count() 将导致一个sql 查询。在您调用 SaveChanges 之前,数据库中没有任何记录,因此它将返回 0。 如果您想在保存更改之前引用添加的对象,请使用此代码:
_entity.WorkSet.Context.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified | EntityState.Unchanged).Where(e => e.Entity is WorkSet).Select(e => e.Entity as WorkSet).Count();
我想,您使用的是 EF 1,如果您移动到较新的版本,则有一个更简单的解决方案:
_entity.WorkSet.Local.Count();
