Entity framework EF 5-无法确定是否附加了实体
我试图确定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
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()
上查找并从那里获取它…哦,那么实体键就是主键了?