0

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

4

1 回答 1

0

您不需要大部分代码......只需使用

if (context.Entry(entity).State == EntityState.Detached)
于 2013-06-20T19:36:08.917 回答