2011-02-25 19 views
11

cuando intento para unir tablasCómo unirse a las tablas en la FE LINQ

var query = 
    from foo in db.Foos 
    from bar in db.Bars 
    where foo.ID == bar.FooID 
    where foo.ID == 45 
    select bar; 


query.toArray() 

consigo tal error

Unable to create a constant value of type 'Bar'. Only primitive types ('such as Int32, String, and Guid') are supported in this context. 

Respuesta

23

probar ese lugar:

var query = 
    from foo in db.Foos 
    join bar in db.Bars on foo.ID equals bar.FooID 
    where foo.ID == 45 
    select bar; 

De todos modos, te sugiero modele la relación entre Foo y Bar en el diseñador de EDM, de esta manera no necesita una unión explícita:

var query = 
    from foo in db.Foos 
    where foo.ID == 45 
    from bar in foo.Bars 
    select bar; 
+0

¿modelará la relación en el diseñador de EDM también creará una clave externa en la base de datos? – sgarg

+0

cómo convertirlo a LINQ basado en métodos? No tengo idea de cómo convertir 'from bar en foo.Bars' usando Method-Based – Willy

+1

@Willy' db.Foos.Where (foo => foo.ID == 45) .SelectMany (foo => foo.Bars) ' –

Cuestiones relacionadas