在我的应用程序中,我需要检索实体的部分图。
这些实体由用户处理,稍后应保存。
因此返回和保存上下文不同,但我需要对整个图表进行更改跟踪。
据我所知,现在不推荐使用 STE
但我不知道为这种情况选择什么类型的实体。谁能给出解释?
问问题
121 次
1 回答
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获取更多详细信息
我希望这对你有帮助。
于 2012-12-29T12:22:18.633 回答