实体框架Linq查询无关子表

本文关键字:查询 框架 Linq 实体 | 更新日期: 2023-09-27 18:06:03

我使用实体框架6.1.3来生成实体和数据模型。

如果我有两个表:Orders -> OrderDetails,它们之间有一个关系(OrderId),那么我可以使用以下查询

获得所有的订单和相关的OrderDetails
dbContext.Order().Include(a => a.OrderDetails);

但是如果我为Orders创建了一个视图(vOrder),那么在模型中vOrder和OrderDetails之间没有直接关系,尽管我可以通过OrderId上的连接将它们链接在一起。我怎么还能从vOrder和相关的OrderDetails中获得所有数据。下面的查询不能工作,除非我手动添加所有的导航属性。

dbContext.vOrder().Include(a => a.OrderDetails);
是否有一个简单的LINQ查询来完成预期的查询?

谢谢你的帮助。

实体框架Linq查询无关子表

执行手动连接并返回包含两者的匿名对象

类似:

dbContext.vOrder
  .GroupJoin(
    dbContext.OrderDetails,
    v=>v.orderid,
    od=>o.orderid,
    (v,od)=>new {v=v,od=od});

当然,你可以在vOrder上添加适当的导航属性,并做你所说的。

为什么不在视图中包含更多列(或者创建另一个包含所有所需数据的视图,如果您不想修改第一个视图)?