繁体   English   中英

使用实体框架从多个表中选择

[英]Select from multiple tables using 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语法对其不起作用..

如果使用查询语法,即使不存在任何外键关系,也可以联接表。 遵循以下思路:

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 };

这些链接上有lambda和查询语法的示例:

MSDN 101 LINQ示例(主要是查询语法)

Nilzor的LINQ 101样品-Lambda风格

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

class TableA {
    Int32 Id {get; set;}

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

并在查询中使用它们

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

当然,可能需要一些配置(代码或注释)来设置关系以使其适合数据库架构。 但是您将一次而不是对每个查询都这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM