相关疑难解决方法(0)

实体框架linq查询Include()多个子实体

这可能是一个非常重要的问题,但是当编写跨越三个级别(或更多)的查询时,包含多个子实体的好方法是什么?

即我有4个表:Company,Employee,Employee_CarEmployee_Country

公司与员工有1:m的关系.

Employee与Employee_Car和Employee_Country都有1:m的关系.

如果我想编写一个返回所有4个表中数据的查询,我目前正在编写:

Company company = context.Companies
                         .Include("Employee.Employee_Car")
                         .Include("Employee.Employee_Country")
                         .FirstOrDefault(c => c.Id == companyID);
Run Code Online (Sandbox Code Playgroud)

必须有一个更优雅的方式!这是冗长的,并产生可怕的SQL

我在VS 2010中使用EF4

linq entity-framework lazy-loading

167
推荐指数
4
解决办法
26万
查看次数

如何在LINQ中的子表上创建where条件

这是对另一个问题的答案部分中的这个问题的回应.

我有一个Orders集合,每个Order订购OrderItems的集合,每个OrderItem都有一个PartId.使用LINQ如何实现以下SQL语句:

1)选择具有特定零件ID的所有订单

SELECT *
FROM Order
WHERE Id in (SELECT OrderId FROM OrderItems WHERE PartId = 100)
Run Code Online (Sandbox Code Playgroud)

2)选择Order.OrderNumber和OrderItem.PartName

SELECT Order.OrderNumber, OrderItem.PartName
FROM Order INNER JOIN OrderItem ON Order.Id = OrderItem.OrderId
WHERE OrderItem.partId = 100
Run Code Online (Sandbox Code Playgroud)

3)选择Order.OrderNumber和整个OrderItem细节:

SELECT Order.OrderNumber, OrderItem.*
FROM Order INNER JOIN OrderItem ON Order.Id = OrderItem.OrderId
WHERE OrderItem.partId = 100
Run Code Online (Sandbox Code Playgroud)

.net linq

4
推荐指数
1
解决办法
3851
查看次数

标签 统计

linq ×2

.net ×1

entity-framework ×1

lazy-loading ×1