我正在尝试确定是否附加了EF 5实体,如下所示:
首先调用此方法:
public bool IsAttached(object entity)
{
EntityKey entityKey = GetEntityKey(entity);
if (entityKey == null)
return false;
return IsAttached(this.AsObjectContext(), entityKey);
}
调用此方法:
public EntityKey GetEntityKey(object entity)
{
ObjectStateEntry objectStateEntry;
if (null != entity && this.AsObjectContext().ObjectStateManager.TryGetObjectStateEntry(entity, out objectStateEntry))
{
return objectStateEntry.EntityKey;
}
return null;
}
如果IsAttached()方法返回false,则调用此方法:
var attachedEntity = context.Set<TEntity>().Attach(entity);
我遇到的问题是IsAttached()
方法总是返回false,因为GetEntityKey()
返回null,即使对象已经附加了。 IOW,即使附加了实体,我也无法获得实体密钥,这会导致整个事情失败。谁能看到我做错了什么?
我使用的是EF 5,而不是代码。
答案 0 :(得分:0)
您不需要大部分代码......只需使用
即可if (context.Entry(entity).State == EntityState.Detached)