2009-10-08 12 views
7

Mam dwie tabele z dwóch różnych Kontekstach danych. Chociaż obie tabele pochodzą z tej samej bazy danych, istnieją dwa oddzielne datacontext.Jak wewnętrznie łączyć tabele z różnych Kontekst danych?

Komunikat o błędzie:

Kwerenda zawiera odniesienia do elementów zdefiniowanych w innym kontekście danych.

Jak mogę to obejść? Każda pomoc jest doceniana. Dzięki.

+1

Jak to ma sens z biznesowego punktu widzenia, aby mieć 2 datakeksty? Normalnie zaleca się, aby zawsze mieć tylko 1 datacontext na bazę danych i pracować z tym ... – Robban

+2

To prawdopodobnie nie ma sensu, ale to jest to, z czym pracuję. – jinsungy

+0

Jego dobrą praktyką jest posiadanie jednego kontekstu do odczytu i jednego do zapisu – skyfoot

Odpowiedz

0

Dlaczego po prostu nie uwzględnisz niezbędnych tabel w każdym kontekście?

+1

Otrzymuję komunikat "Ten element jest zdefiniowany więcej niż jeden raz". – jinsungy

+0

Wtedy prawdopodobnie robisz coś złego. –

+0

EF nie uwzględnia przestrzeni nazw, gdy masz wiele modeli. Nie można mieć tabel o tej samej nazwie w wielu modelach. Nie wierz mi? Spróbuj ! –

2

Nie. Konteksty danych mogą mieć niespójne widoki bazy danych.

6

Jeśli kod robi coś na wzór:

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

... po prostu go zmienić na:

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

L2S datacontext wykorzystuje atrybuty klasy, więc jeśli używasz Opcja GetTable w innym formacie danych niż ten, do którego jest dołączona tabela, po prostu podniesie atrybuty tabeli, kolumny itp. Z klasy def i użyje go tak, jakby był częścią DC używanego w zapytaniu ...

1

Innym rozwiązaniem jest zmienić rezultat do listy().

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