【发布时间】:2020-02-10 15:47:43
【问题描述】:
我使用的是 EF Core 3.1。我希望 Include() 和 ThenInclude 产生 Inner join 但他们正在生产 LEFT join 。 我正在使用代码优先方法。 以下是我的示例模型
public class Employee
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public string Gender { get; set; }
public string Img1 { get; set; }
public virtual EmployeeDepartment EmployeeDepartment { get; set; }
}
And
public class EmployeeDepartment
{
public int DeptID { get; set; }
[ForeignKey("Employee")]
[Required]
public int Id { get; set; }
public string DeptName { get; set; }
public virtual Employee Employee { get; set; }
}
下面是 linq 查询
var result= context.Employees.Include(dept => dept.EmployeeDepartment).ToList();
在 O/P 窗口中产生下面的 Sql 查询
SELECT [dept].[Id], [dept].[Gender], [dept].[Img1], [dept].[Name], [dept.EmployeeDepartment].[Id], [dept.EmployeeDepartment].[DeptID], [dept.EmployeeDepartment].[DeptName]
FROM [Employees] AS [dept]
**LEFT JOIN** [EmployeeDepartment] AS [dept.EmployeeDepartment] ON [dept].[Id] = [dept.EmployeeDepartment].[Id]
我想制作内部连接。欢迎提出任何建议。
【问题讨论】:
-
将
[Required]属性添加到EmployeeDepartment -
我已经尝试过了,但没有帮助。
-
这个thread已经解释清楚了,目前获得内部连接的唯一方法(当然除了手动连接)是从关系的另一端导航。
标签: .net asp.net-core asp.net-core-3.1 ef-core-3.1