我在winforms应用程序中使用ef,我的想法是每个事务都有一个objectcontext,而不是一个长时间运行的上下文。但是,当我试图将前一个事务中的对象附加到新事务中时,我得到了一个错误,这与实体已经在另一个上下文中有关。
我有点假设,当对象上下文被释放时,实体被分离,不是这样吗?(也许我在某个地方没有正确地处理上下文)。如果实体不分离,有什么办法可以处理吗?
编辑
很明显,实体在上下文处理后并没有被分离,如@f.aquino所说,但这样做似乎是可行的。尽管我不确定这是否是处理实体的正确方法。也许有人会对可能由此产生的问题发表评论:
public void Attach(params EntityObject[] objects)
{
foreach (EntityObject obj in objects)
{
((IEntityWithChangeTracker)obj).SetChangeTracker(null);
entities.Attach(obj);
}
}
基本上,当我想要将一个实体重新附加到一个上下文时,我只需将该实体的变更跟踪器设置为空,然后将其附加到新的上下文。它似乎工作得很好。