EF 5 - 无法确定实体是否已附加

时间:2013-06-20 19:23:11

标签: entity-framework entity-framework-5

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

1 个答案:

答案 0 :(得分:0)

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

即可
if (context.Entry(entity).State == EntityState.Detached)