【发布时间】:2011-05-22 19:45:27
【问题描述】:
在执行 SaveChanges 之前,我正在执行几个插入命令。
有没有办法查询附加的实体(我现在在 SaveChanges 之前插入的)以检查是否添加或更新了特定记录?
【问题讨论】:
标签: c# .net entity-framework
在执行 SaveChanges 之前,我正在执行几个插入命令。
有没有办法查询附加的实体(我现在在 SaveChanges 之前插入的)以检查是否添加或更新了特定记录?
【问题讨论】:
标签: c# .net entity-framework
是的,有办法。 ObjectContext 实例提供名为 ObjectStateManger 的属性。 ObjectStateManager 管理所有连接的实体并且知道它们的状态:
ObjectStateEntry entry = context.ObjectStateManager.GetObjectStateEntry(attachedEntity);
EntityState state = entry.State;
如果您需要获取所有修改或添加的实体,您可以使用:
var entities = context.ObjectStateManager
.GetObjectStateEntries(EntityState.Added | EntitiSate.Modified)
.Select(e => e.Entity);
您可以进一步使用OfType 来仅选择某种类型的实体。您还可以使用此逻辑 SaveChanges,正如 Stack Overflow 上多次描述的那样 - 例如 here。
【讨论】:
ObjectStateManager 没有实现任何接口,因此如果您想要任何包装器,您必须定义自己的接口并创建自己的包装类。跨度>