2010-08-04 3 views
0

J'ai un scénario dans lequel je veux déplacer un tas de graphes d'objets entre les contextes. Plus précisément, j'essaie d'importer le contenu de une base de données dans un autre. Il existe un contexte [CurrentContext] connecté à la base de données principale, et un autre contexte [ImportContext] connecté à un autre DB. Je souhaite copier les entités de ImportContext dans CurrentContext, en insérant de nouveaux enregistrements ou en mettant à jour les enregistrements existants. Quelque chose comme ça.Déplacer des entités entre des contextes dans .NET Entity Framework 3.5

ImportContext.Organization.MergeOption = MergeOption.NoTracking; Foreach (var org dans ImportContext.Organizations.ToList()) { CurrentContext.Attach (org); // ou CurrentContext.AddToOrganization (org); }

Lorsque je tente la méthode Attach, l'entité n'est pas sauvé parce que le EntityState est demeurée inchangée, et je ne peux pas comprendre comment le marquer comme nouveau. En outre, il semble que l'option Attacher ne fonctionne pas si l'entité est nouvelle, car EntityKey est lié à ImportContext. Si je définis l'EntityKey sur null, je perds les associations entre l'organisation et d'autres entités. AddToOrganization a le même problème avec la perte des associations, ou échouerait si l'organisation était déjà dans le CurrentContext.

Quelle est l'approche appropriée pour effectuer ce type d'importation? Je suis actuellement en utilisant EF3.5 et ne peut pas mettre à jour le projet EF4.

Répondre

1
  1. Detach l'entité de l'ancien contexte.
  2. AddObject l'entité dans le nouveau contexte.
+2

Cela ne fonctionne pas, dans certains cas, l'entité n'est pas nouvelle, elle est juste mise à jour. En outre, lorsque je détache l'entité, je perds le reste du graphe d'objet, qui doit également être ajouté ou mis à jour. – user410854

+0

Vous devez être plus précis. –

+0

Il existe un contexte [C1] qui contient les éléments A, B, C, q, x, y, z et un autre contexte [C2] avec C, D, E, x, y, z. A a une collection avec les éléments q, x, y; [C1] .C a une collection avec les éléments x, y, z; [C2] .C a une collection avec les éléments x, y. Je voudrais copier les éléments de [C1] (A, B, C, q, x, y, z) dans [C2]. Si l'élément n'existe pas dans [C2], je veux qu'il soit ajouté, s'il existe, je veux qu'il soit mis à jour. – user410854

Questions connexes