2009-10-08 15 views
7

Ho due tabelle da due diversi contesti dati. Sebbene entrambe le tabelle provengano dallo stesso database, esistono due distinti datacodex.Come accedere alle tabelle interne da diversi Contesti dati?

Messaggio di errore:

La query contiene riferimenti a oggetti definiti in un contesto di dati diversi.

Come posso aggirare questo? Qualsiasi aiuto è apprezzato. Grazie.

+1

Come ha senso dal punto di vista aziendale avere 2 dati di riferimento? Normalmente consiglierei di avere sempre 1 datacontext per database e lavorare con quello ... – Robban

+2

Probabilmente non ha senso, ma questo è quello con cui sto lavorando. – jinsungy

+0

È consigliabile disporre di un contesto per lettura e uno per scrittura – skyfoot

risposta

0

Perché non includere solo le tabelle necessarie in ogni contesto?

+1

Viene visualizzato un errore "Questo membro è stato definito più di una volta". – jinsungy

+0

Quindi probabilmente stai facendo qualcos'altro di sbagliato. –

+0

EF non prende in considerazione gli spazi dei nomi quando si hanno più modelli. Non è possibile avere tabelle con nomi identici in più modelli. Non mi credi? Provalo ! –

2

Non è così. I contesti dei dati possono avere viste incoerenti del database.

6

Se il codice fa qualcosa sulla falsariga di:

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

... basta cambiare a:

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

il DataContext L2S utilizza gli attributi della classe, quindi se si utilizza GetTable su un altro datacontext rispetto a quello a cui è collegata la tabella prenderà solo gli attributi table, column, etc dalla classe def e lo userà come se fosse parte della DC che stai usando nella query ...

1

Un'altra soluzione è cambiare il risultato to List().

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