如何检查附加到EF上下文的POCO的状态?

时间:2013-01-31 07:57:43

标签: c# .net entity-framework

检查作为POCO(不是从EntityObject派生)并附加到EF上下文的实体的状态的方法是什么?

谢谢!

2 个答案:

答案 0 :(得分:1)

如果您使用的是DbContext,而c是您的实体参考

            var state = Context.Entry(c).State;

如果您使用的是ObjectContext。

//if x is your entity reference
var state = context.ObjectStateManager.GetObjectStateEntry(x);

答案 1 :(得分:1)

如果您使用标识符字段并使用DBContext,则可以使用以下内容进行检查,假设实体的Id为entityId;

if(Context.Entities.Local.Any(q => q.Id == entityId))
{
    // already attached to the context
}

参考this

  

DbSet的Local属性提供对实体的简单访问   上下文当前正在跟踪的集合,但没有   被标记为已删除。访问Local属性永远不会导致   查询要发送到数据库。