使用实体框架,我有一个名为WorkSet
的表。我向其中添加一个项目,如下所示:
_entity.WorkSet.AddObject( new WorkSet() { Name = "Something" } );
在此之后查询表时,没有收到任何结果。
_entity.WorkSet.Count() == 0 // always true
也就是说,直到我呼叫
SaveChanges
。我了解为什么这是它的工作方式,但是我想知道在通过SaveChanges
将更改保存到数据库之前如何在实体中查看更改。我希望这是一个可以很快解决的简单问题。谢谢!! 最佳答案
为此目的使用ObjectContext.SavingChanges
事件。在事件处理程序中,通过查看ObjectStateManager
检查已添加或修改的实体,这些实体将被保存。
context.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified)
如果是您要处理的
DbContext
,请使用以下代码从中获取ObjectContext
:var adapter = (IObjectContextAdapter)dbContext;
var objectContext = adapter.ObjectContext;
使用以下代码来获取新添加的工作集:
var entries = context.ObjectStateManager
.GetObjectStateEntries(EntityState.Added)
.Where(entry => entry.Entity.GetType() == typeof(WorkSet));