Cómo unir dos de la tabla a partir de dos diferentes edmx uso de consulta de linq..
Es allí una manera a la consulta de 2 diferentes edmx en un momento.

Gracias.

  • nos muestran los contenidos de la tabla !
  • Tengo 100 mesas en edmx1 y 100 en edmx2.. just wanna consulta linq para unirse a un tabla1 de edmx1 y en la tabla 2 de edmx2
  • He actualizado la respuesta – yo estoy más bien con la esperanza de que usted está tratando con (o pueden filtrar) sólo un pequeño conjunto de datos de ambas tablas antes de la combinación.
InformationsquelleAutor John Hawkins | 2013-06-06

1 Comentario

  1. 5

    Actualización

    Como por su comentario, EF no era capaz de analizar un combinado de árbol de Expresión a través de 2 diferentes contextos.

    Si el número total de registros en las tablas es relativamente pequeño, o si usted puede reducir el número de registros en la combinación de un pequeño número de filas (decir < 100 cada uno), entonces usted puede materializar los datos (por ejemplo,.ToList() /.ToArray() /.AsEnumerable()) de ambas tablas y el uso de la Linq join como por abajo.

    por ejemplo, donde yesterday es un DateTime seleccionar sólo un pequeño conjunto de datos de ambas bases de datos se requiere de la combinación:

    var reducedDataFromTable1 = context1.Table1
                                        .Where(data => data.DateChanged > yesterday)
                                        .ToList();
    var reducedDataFromTable2 = context2.Table2
                                        .Where(data => data.DateChanged > yesterday)
                                        .ToList();
    var joinedData = reducedDataFromTable1
                             .Join(reducedDataFromTable2,
                                   t1 => t1.Id,    //Join Key on table 1
                                   t2 => t2.T1Id,  //Join Key on table 2
                                   (table1, table2) => ... //Projection
                                   );

    Sin embargo, si los datos necesarios de ambas bases de datos para la combinación es mayor que el que podría razonablemente esperar que en la memoria, entonces usted necesita para investigar alternativas, tales como:

    • Puede hacer la cruz de la base de datos de combinación en la base de datos? Si es así, mira, con un Sql proyección como una vista para hacer la combinación, que usted puede utilizar en su edmx.
    • De lo contrario, usted va a necesitar para hacer la combinación manualmente iteración en la 2 enumerables, algo así como chunking – esto no es exactamente trivial. La ordenación de los datos en ambas tablas por el mismo orden será de ayuda.

    Respuesta Original

    Creo que usted está buscando para el Linq ÚNETE método de extensión

    Usted puede unirse a cualquiera de los 2 IEnumerables de la siguiente manera:

    var joinedData = context1.Table1
                             .Join(context2.Table2,
                                   t1 => t1.Id,    //Join Key on table 1
                                   t2 => t2.T1Id,  //Join Key on table 2
                                   (table1, table2) => ... //Projection
                                   );

    Donde:

    • Clave de combinación en la tabla 1 por ejemplo, la Clave Principal de la Tabla 1 o naturales comunes
      clave
    • Clave de combinación en la tabla 2, por ejemplo, una Clave externa o naturales comunes clave
    • De proyección : puedes lo que quieres de tabla1 y tabla2, por ejemplo,
      en una nueva clase anónima, tales como new {Name = table1.Name, Data = table2.SalesQuantity}
    • Hola Stuart, estoy recibiendo un Error diciendo.. «El especificado expresión LINQ contiene referencias a las consultas que están asociados con diferentes contextos.»

Dejar respuesta

Please enter your comment!
Please enter your name here