我正面临着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上使用。
发布于 2016-03-24 21:43:04
您需要员工和考核的InverseProperty
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中那样有意义。
https://stackoverflow.com/questions/35725046
复制相似问题