实体框架查询,如何选择多个表?

时间:2012-12-19 20:54:38

标签: c# .net entity-framework entity

我有这个查询

var resultado = from c in conn.carrera
                            join u in conn.usuario on c.idusuario equals u.idusuario
                            join t in conn.texto on c.idtexto equals t.idtexto
                            where c.estatus == 1
                            select c;

我如何得到它的东西:

select c.*,u.*,t.eltexto from carrera c
join usuario u on c.idusuario =u.idusuario
join texto t on c.idtexto = t.idtexto
where c.estatus = 1

您可以在查询中看到我select c.*, u.* and t.col1, 我怎样才能在EF中获得它?因为我的第一个查询仅获得carrera.*,但我需要更多数据。

感谢

2 个答案:

答案 0 :(得分:4)

您可以轻松返回包含三个连接表的所有属性的新对象:

var resultado = from c in conn.carrera
                            join u in conn.usuario on c.idusuario equals u.idusuario
                            join t in conn.texto on c.idtexto equals t.idtexto
                            where c.estatus == 1
                            select new
                            { 
                               c.prop_1, 
                               c.prop_n, 
                               u.prop_1, 
                               u.prop_n, 
                               t.prop_1, 
                               t.prop_n 
                            };

答案 1 :(得分:0)

select c.*,u.*,t.eltexto from carrera c
join usuario u on c.idusuario =u.idusuario
join texto t on c.idtexto = t.idtexto
where c.estatus = 1

from c in Carrerra
join u in Usuario on c.idusuario equals u.idusuario
join t in Texto on c.idtexto equals t.idtexto
where c.estatus = 1
select new {
  newcolumn1 = c.column1,
  c.column2,
  usercolumn1 = u.column1,
  usercolumn2 = u.column2,
  textcolumn = t.column1
}

如果您想要访问对象本身,那么您可以

select new {
  usario = u,
  carrera = c,
  texto = t
}

Carrera,Usario和Texto在您的实体框架容器中引用模型。