Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework EF 5-无法确定是否附加了实体_Entity Framework_Entity Framework 5 - Fatal编程技术网

Entity framework EF 5-无法确定是否附加了实体

Entity framework EF 5-无法确定是否附加了实体,entity-framework,entity-framework-5,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); } var attac

我试图确定EF 5实体是否按如下方式连接:

首先,此方法被称为:

public bool IsAttached(object entity)
{
    EntityKey entityKey = GetEntityKey(entity);

    if (entityKey == null)
        return false;

    return IsAttached(this.AsObjectContext(), entityKey);
}
        var attachedEntity = context.Set<TEntity>().Attach(entity);
它调用此方法:

public EntityKey GetEntityKey(object entity)
{
    ObjectStateEntry objectStateEntry;
    if (null != entity && this.AsObjectContext().ObjectStateManager.TryGetObjectStateEntry(entity, out objectStateEntry))
    {
        return objectStateEntry.EntityKey;
    }
    return null;
}
如果IsAttached()方法返回false,则调用此方法:

public bool IsAttached(object entity)
{
    EntityKey entityKey = GetEntityKey(entity);

    if (entityKey == null)
        return false;

    return IsAttached(this.AsObjectContext(), entityKey);
}
        var attachedEntity = context.Set<TEntity>().Attach(entity);
var attachedEntity=context.Set().Attach(实体);
我遇到的问题是
IsAttached()
方法总是返回false,因为
GetEntityKey()
即使对象已经附加,也返回null。注意,即使连接了实体,我也无法获取实体密钥,这会导致整个过程失败。有人能看出我做错了什么吗


我使用的是EF 5,而不是先编写代码。

您不需要大部分代码。。。只用

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

这行代码也失败了。当我执行此操作时,它会告诉我实体已分离,但当我附加它时,我会收到一个错误,表示对象管理器中存在具有相同键的对象。可能是。您知道实体键是如何生成的吗?不,对不起-您有您的实体,并且知道该键-在
Set()
上查找并从那里获取它…哦,那么实体键就是主键了?