![](/img/trans.png)
[英]Entity Framework - InverseProperty and IQueryable (or Equivalent)
[英]InverseProperty Entity Framework 7
我面臨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上尚無法進行延遲加載。
您需要在Employee和Review上都具有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那樣的含義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.