2
EF7是否完全支持導航屬性和自定義投影?或者,也許我誤解了如何構建這個查詢。 Study
實體具有可空的ProjectId
和相應的虛擬Project
導航屬性。 Project
實體具有不可空的CategoryId
和Category
導航屬性。這些實體使用ef
命令進行反向腳手架。EF 7 - 導航屬性 - 不正確的SQL?
如果我運行下面的查詢:
return _context.Study
.Include(s => s.Project)
.ThenInclude(p => p.Category)
.Select(s => new Models.StudySearchResult
{
StudyId = s.StudyId,
MasterStudyId = s.MasterStudyId,
ShortTitle = s.ShortTitle,
Category = s.Project == null ? string.Empty : s.Project.Category.CategoryDesc,
SubmitterId = s.SubmitterId
}).ToList();
EF7錯誤地生成以下SQL,它使用INNER JOIN
而不是LEFT JOIN
:
SELECT [s].[StudyId]
,[s].[MasterStudyId]
,[s].[ShortTitle]
,CASE WHEN [s].[ProjectId] IS NULL THEN @__Empty_0 ELSE [s.Project.Category].[CategoryDesc] END
,[s].[SubmitterId]
FROM [Study] AS [s]
INNER JOIN [Project] AS [s.Project]
ON [s].[ProjectId] = [s.Project].[ProjectId]
INNER JOIN [Category] AS [s.Project.Category]
ON [s.Project].[CategoryId] = [s.Project.Category].[CategoryId]
不專案編號構件具有在模型'[必需]'屬性? – Harsh
不,研究模型(從腳手架生成)不具有「ProjectId」所需的屬性。我沒有爲DbContext檢查'OnModelCreating()'並且發現了以下配置:'entity.HasOne(d => d.Project).WithMany(p => p.Study).HasForeignKey(d => d.ProjectId); '配置爲Study,這似乎是正確的。 – TimeBomb006