我遇到一些問題正在使用EF中的方法組加載相關實體。實體框架方法組包含不起作用
在簡單查詢中加載相關實體與Include
配合使用。
例如:
var result =
Repository.Query<TimeState>(x => x.Accepted == 0 && x.ProjectID != null && myTeam.Contains(x.EmployeeID))
.Include(typeof(Project).Name)
.Include(typeof(Employee).Name)
.Include(typeof(EmployeeDetails).Name)
.OrderByDescending(x => x.SubmitedDate);
運行完美,並加載項目和員工
但在接下來的查詢不加載的項目及僱員
var result2 = from item in Repository.Query<TimeState>(x => x.Accepted == 0 && x.ProjectID != null)
.Include(typeof(Project).Name)
.Include(typeof(Employee).Name)
.Include(typeof(EmployeeDetails).Name)
let projectId = (int)item.ProjectID
let isA = projectsIds.Contains(projectId) && item.Employee.EmployeeDetails.SuperiorID == id
let isB = item.Project.ManagerID == id && employeesTeam.Contains(item.EmployeeID)
where isA || isB
orderby item.SubmitedDate descending
select item;
我試着做這樣的改變:select new { item, item.Employee, item.Project };
var result3 = from item in Repository.Query<TimeState>(x => x.Accepted == 0 && x.ProjectID != null)
.Include(typeof(Project).Name)
.Include(typeof(Employee).Name)
.Include(typeof(EmployeeDetails).Name)
let projectId = (int)item.ProjectID
let isA = projectsIds.Contains(projectId) && item.Employee.EmployeeDetails.SuperiorID == id
let isB = item.Project.ManagerID == id && employeesTeam.Contains(item.EmployeeID)
where isA || isB
orderby item.SubmitedDate descending
select new { item, item.Employee, item.Project };
之後,result3[0].Employee
的值爲result3[0].Project
(或該集合中的任何其他項)的值相同。
問題是我不需要員工和項目作爲這個動態對象的獨立屬性result3。
如何在返回result2的方法中擁有Employee和Project? :)
從'result2'訪問'Project'或'Employee'時會發生什麼? – Default
順便問一下,你爲什麼回滾marc_s的編輯? IMO編輯提高了我們問題的可讀性。 – Default
@Default,在'result2'中'Employee'和'Project'是NULL。 – meorfi