2010-08-04 67 views
0

我有一个场景,我想在上下文之间移动一堆对象图形 。具体而言,我试图将 一个数据库的内容导入到另一个数据库中。连接到主DB的上下文[CurrentContext] ,以及连接到另一个DB的另一个上下文[ImportContext] 。我想将 ImportContext中的实体复制到CurrentContext中,或者插入新记录或 更新现有记录。 就是这样。在.NET Entity Framework中的上下文之间移动实体3.5

ImportContext.Organization.MergeOption = MergeOption.NoTracking; (org);或者,当前上下文(org);或者当前上下文(org);或者当前上下文(org);或者当前上下文(org)。 // or CurrentContext.AddToOrganization(org); }

当我尝试Attach方法,未保存的实体,因为 entitystate是不变的,而我无法弄清楚如何将其标记为 新。另外,如果实体是新的,则看起来Attach不起作用,因为EntityKey绑定到ImportContext,所以 。 如果我将EntityKey设置为空,则我将失去组织与其他实体之间的关联。 AddToOrganization具有与丢失关联相同的问题 ,或者如果组织曾经位于CurrentContext的 中,将会失败。

做这种导入的适当方法是什么?我是目前使用EF3.5的 ,无法将项目更新到EF4。

回答

1
  1. Detach实体来自旧的上下文。
  2. AddObject该实体进入新的上下文。
+2

这不起作用,在某些情况下,实体不是新的,它只是更新。另外,当我分离实体时,我会丢失对象图的其余部分,这也需要添加或更新。 – user410854 2010-08-04 19:15:46

+0

你需要更具体。 – 2010-08-04 20:47:22

+0

存在包含项目A,B,C,q,x,y,z和上下文[C2]与C,D,E,x,y,z的上下文[C1]。 A有一个包含项目q,x,y的集合; [C1] .C具有项目x,y,z的集合; [C2] .C具有项目x,y的集合。 我想将[C1](A,B,C,q,x,y,z)中的项目复制到[C2]中。如果该项目在[C2]中不存在,我希望它被添加,如果它存在,我希望它被更新。 – user410854 2010-08-05 00:28:27

相关问题