在我的应用程序中,我需要检索实体的部分图形 这些实体由用户处理,稍后应保存 因此返回和保存的上下文不同,但我需要对整个图形进行更改跟踪 据我所知,STE现在已经弃用了 但我不知道为这种情况选择什么类型的实体。 任何人都可以给出解释吗?
答案 0 :(得分:1)
您可以尝试下面的一个。
插入已断开连接的实体
这是Insert<>
的通用版本,可以插入任何已断开连接的实体。
public TEntity Insert<TEntity>(TEntity entity)
where TEntity : EntityObject
{
AddTo<TEntity>(entity);
this.SaveChanges(true);
// Without this, attaching new entity of same type in same context fails.
this.Detach(entity);
return entity;
}
插入已断开连接的子实体
插入子实体的一般原则是:
首先你必须在上下文中附加父实体,
然后你必须设置父和孩子之间的映射(你不能有映射!),
然后你必须调用SaveChanges。
以下是代码:
public TEntity Insert<TParent, TEntity>(
TParent parent,
Action<TParent, TEntity> addChildToParent,
TEntity entity)
where TEntity : EntityObject
where TParent : EntityObject
{
AddTo<TParent, TEntity>(parent, addChildToParent, entity);
this.SaveChanges();
this.AcceptAllChanges();
// Without this, consequtive insert using same parent in same context fails.
this.Detach(parent);
// Without this, attaching new entity of same type in same context fails.
this.Detach(entity);
return entity;
}
private void AddTo<TParent, TEntity>(TParent parent,
Action<TParent, TEntity> addChildToParent,
TEntity entity)
where TEntity : EntityObject
where TParent : EntityObject
{
Attach<TParent>(parent);
addChildToParent(parent, entity);
}
您可以从Entity Framework working in fully disconnected Here
获取更多详细信息我希望这会对你有所帮助。