![](/img/trans.png)
[英]Prevent SELECT N+1 issue in Entity Framework query using Joins
[英]Conditionally fetching associated entity avoiding SELECT N+1 problems
假設我有以下域:
public class Company
{
public long Id;
}
public class EmployeeDetailsInCompany
{
public long Id;
public Company Company;
}
public class Employee
{
public long Id;
public List<EmployeeDetailsInCompany> EmployeeDetailsInCompany;
}
public class Position
{
public long Id;
public Employee Employee;
public Company Company;
}
(請注意,這是一個非常簡化的版本,使問題更容易理解。)
基本上,我想訪問我在Position
實體中擁有的EmployeeDetailsInCompany
的Employee
。 目前,我必須遍歷我在Employee
上的列表,並找到Company.Id
與我的Company
實體相匹配的EmployeeDetailsInCompany
。 這是因為Position
僅對某個Company
的某個Employee
有效,所以這就是EmployeeDetailsInCompany
進入的地方。
這里最好的選擇是在Position
和EmployeeDetailsInCompany
之間建立關聯,但這是不可能的,因為該表上的數據可能會發生變化(例如,公司可能決定清除其所有員工詳細信息並再次加載新數據)。
是否可以重寫這些關聯,這樣我就不會陷入 SELECT N+1 問題(現在我必須遍歷列表,這種情況正在發生)? 我該如何更改它,以便更輕松地找到我想要的詳細信息,而不會有太多麻煩?
我曾考慮在Position
上創建一個EmployeeDetailsInCompany
,該Position
將使用公式進行映射,但這會給我一個只讀列,我試圖避免 HQL。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.