查询附加的实体

时间:2011-05-22 11:36:45

标签: c# .net entity-framework

我在做SaveChanges之前做了几个插入命令。

有没有办法查询附加的实体(我现在在SaveChanges之前插入)以检查是否添加或更新了特定记录?

1 个答案:

答案 0 :(得分:2)

是的,有办法。 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仅选择某种类型的实体。您还可以在Stack Overflow上多次使用此逻辑SaveChanges - 例如here