反向属性实体框架 7.

本文关键字:框架 实体 属性 | 更新日期: 2023-09-27 18:36:50

我遇到了EF7反函数的问题。有两个实体像这样连接。

public class Employee
    {
        public int Id { get; set; }
    }
public class Review
{
    public int Id { get; set; }
    [Required]
    public virtual Employee Employee { get; set; }
    [Required]
    public Employee Manager { get; set; }
 }

我想在开始查询员工时访问评论列表,所以我尝试这样做:

public class Employee
    {
        public Employee()
        {
            Reviews = new List<Review>();
        }
        public int Id { get; set; }
        [InverseProperty("Employee")]
        public virtual ICollection<Review> Reviews { get; set; }
    }

这样,查询就没有很好地进行并返回此错误:

Invalid column name 'EmployeeId1' .

这是查询的部分,其中错误在哪里:

SELECT [ua].[Id], [r].[EmployeeId], [r].[EmployeeId1], [r1].[EmployeeId], [r1].[EmployeeId1]
FROM [UserAssessment] AS [ua]
LEFT JOIN [Review] AS [r] ON [ua].[ReviewId] = [r].[Id]
LEFT JOIN [Review] AS [r1] ON [ua].[ReviewId] = [r1].[Id]

有人知道我能做什么吗?

更新

此语句正在生成查询:

return this.DbSet
.Include(ua => ua.Employee).ThenInclude(t => t.Role)
.Include(ua => ua.Review).ThenInclude(rt => rt.ReviewType)
.Include(ua => ua.Review).ThenInclude(rt => rt.Manager).ThenInclude(r => r.Role)

我必须使用相同的includes进行访问,因为延迟加载在 EF7 上尚不可用。

反向属性实体框架 7.

您需要员工和评论上的反向属性

public class Review
{
    public int Id { get; set; }
    [Required]
    [InverseProperty("Reviews")]
    public Employee Employee { get; set; }
    [Required]
    public Employee Manager { get; set; }
 }
public class Employee
    {
        public int Id { get; set; }
        [InverseProperty("Employee")]
        public ICollection<Review> Reviews { get; set; }
    }

应该工作。我有一个类似的设置,它可以在不创建任何新字段的情况下创建导航。如果这不起作用,请告诉我,我将启动一个测试项目。

另请注意,EF7 当前忽略虚拟,这不像在 EF6 中那样有意义。