使用Entity Framework从多个表中进行选择

时间:2015-01-06 11:23:52

标签: c# entity-framework

我正在使用Entity Framework。我想从数据库中的多个表中选择没有外键关系的数据,如

select  
    tOut.columnId, wo.columnType, tIn.* 
from 
    TbaleA tIn,
    TableB tOut,
    TableC wo
where
    1 = 1
    and tIn.columnRefId = tOut.columnGuid
    and tOut.columnId = wo.columnId

实体框架中是否有任何解决方案?我试过使用include语法,它对我不起作用..

3 个答案:

答案 0 :(得分:3)

如果使用查询语法,即使不存在外键关系,也可以连接表。 它会沿着这些方向发展:

var result = from tIn in yourDbContext.TableA
             join tOut in yourDbContext.TableB on tIn.columnRefId equals tOut.columnGuid
             join wo in yourDbContext.TableC on tOut.columnId equals wo.columnId
             select new { tOut.columnId, wo.columnType, TableA = tIn };

答案 1 :(得分:0)

答案 2 :(得分:0)

另一种解决方案是使用/添加导航属性到您的类,例如:

class TableA {
    Int32 Id {get; set;}

    //navigation property
    TableB b {get; set;}
}

并在查询中使用它们

from a in yourDbContext.TableA
select new { a.Id, a.b.columnType}

当然,可能会有一些配置(代码或注释)来设置关系以使它们适合数据库模式。但是你会做一次而不是每次查询。