2009-10-08 9 views
7

Ich habe zwei Tabellen aus zwei verschiedenen Datenkontexten. Obwohl beide Tabellen aus derselben Datenbank stammen, existieren zwei separate Datenkontexte.Wie interne Join-Tabellen aus verschiedenen Datenkontext?

Fehlermeldung:

Die Abfrage Verweise auf Elemente enthält auf einem anderen Datenkontext definiert.

Wie kann ich das umgehen? Jede Hilfe wird geschätzt. Vielen Dank.

+1

Wie macht es aus betriebswirtschaftlicher Sicht Sinn, 2 Datenkontexte zu haben? Normalerweise würde ich empfehlen, immer nur 1 Datenkontext pro Datenbank zu haben und damit zu arbeiten ... – Robban

+2

Es macht wahrscheinlich keinen Sinn, aber das ist, woran ich arbeite. – jinsungy

+0

Es ist eine gute Praxis, einen Kontext zum Lesen und einen zum Schreiben zu haben – skyfoot

Antwort

0

Warum fügen Sie nicht einfach die notwendigen Tabellen in jeden Kontext ein?

+1

Ich bekomme einen Fehler "Dieses Mitglied ist mehr als einmal definiert". – jinsungy

+0

Dann machst du wahrscheinlich etwas anderes falsch. –

+0

EF berücksichtigt Namespaces nicht, wenn Sie mehrere Modelle haben. Sie können Tabellen mit identischem Namen nicht in mehreren Modellen verwenden. Glaub mir nicht? Versuch es ! –

2

Sie nicht. Die Datenkontexte können inkonsistente Ansichten der Datenbank haben.

6

Wenn Ihr Code tut etwas entlang der Linien von:

from a in dc1.TableA 
join b in dc2.TableB on a.id equals b.id 
select new { a, b } 

... ändern Sie es einfach an:

from a in dc1.TableA 
join b in dc1.GetTable<TableB>() on a.id equals b.id 
select new { a, b } 

Die L2S Datacontext die Attribute für die Klasse verwendet, also wenn Sie verwenden GetTable auf einem anderen Datenkontext als dem, an den die Tabelle angehängt ist, greift nur die Tabellen-, Spalten- usw. Attribute aus der Klasse def auf und verwendet sie, als ob sie Teil des DCs wäre, den Sie in der Abfrage verwenden ...

1

Eine andere Lösung ist das Ergebnis ändern (Liste).

var query = (from a in dc1.TableA 
      join b in dc2.TableB on a.id equals b.id 
      select new { a, b }).ToList() 
Verwandte Themen