2009-10-08 16 views
7

Tengo dos tablas de dos Contextos de datos diferentes. Aunque ambas tablas son de la misma base de datos, existen dos contextos de datos separados.¿Cómo combinar tablas internamente desde diferentes contextos de datos?

mensaje de error:

La consulta contiene referencias a elementos definidos en un contexto de datos diferente.

¿Cómo puedo evitar esto? Cualquier ayuda es apreciada. Gracias.

+1

¿Cómo tiene sentido desde el punto de vista empresarial tener 2 datacontexts? Normalmente recomendaría siempre tener solo 1 datacontext por base de datos y trabajar con eso ... – Robban

+2

Probablemente no tenga sentido, pero esto es con lo que estoy trabajando. – jinsungy

+0

Es una buena práctica tener un contexto para lectura y otro para escribir – skyfoot

Respuesta

0

¿Por qué no solo incluye las tablas necesarias en cada contexto?

+1

Aparece el error "Este miembro se define más de una vez". – jinsungy

+0

Entonces probablemente estés haciendo algo diferente. –

+0

EF no tiene en cuenta los espacios de nombres cuando tiene varios modelos. No puede tener tablas con el mismo nombre en varios modelos. No me creas? Intentalo ! –

2

No es así. Los contextos de datos pueden tener vistas inconsistentes de la base de datos.

6

Si el código que hace algo en la línea de:

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

... simplemente cambiarlo a:

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

El DataContext L2S utiliza los atributos de la clase, así que si usa GetTable en otro contexto de datos que el que está adjuntado a la tabla solo recogerá los atributos de tabla, columna, etc. de la definición de clase y lo usará como si fuera parte del DC que está utilizando en la consulta ...

1

Otra solución es cambiar el resultado a la lista().

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