我正在尝试确定是否附加了 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,而不是代码优先。