Entity Framework中包含巢狀屬性層級
在Entity Framework中使用Include()方法擷取包含相關資料的物件時,一個常見的限制是缺乏對包含多層嵌套屬性的支援。例如,假設您有一個模型,其中ApplicationServers擁有一個ApplicationsWithOverrideGroup集合,而ApplicationsWithOverrideGroup包含Application和CustomVariableGroup屬性。
初始嘗試:
為了包含巢狀屬性,您可以嘗試以下方法:
<code class="language-csharp">public IEnumerable<applicationserver> GetAll() { return this.Database.ApplicationServers .Include(x => x.ApplicationsWithOverrideGroup) .Include(x => x.ApplicationWithGroupToForceInstallList) .Include(x => x.CustomVariableGroups) .ToList(); }</code>
但是,此方法只會填入ApplicationWithOverrideVariableGroup的Enabled屬性,而不會填入Application或CustomVariableGroup屬性。
EF 6的解:
要在EF 6中包含嵌套屬性,請使用接受lambda表達式的Include()的重載:
<code class="language-csharp">using System.Data.Entity; query.Include(x => x.Collection.Select(y => y.Property));</code>
EF Core的解決方案:
在EF Core中,使用ThenInclude方法包含嵌套屬性:
<code class="language-csharp">using Microsoft.EntityFrameworkCore; query.Include(x => x.Collection) .ThenInclude(x => x.Property);</code>
透過使用這些方法,您可以急切地載入Entity Framework中的巢狀屬性級別,確保您的物件已完全填入了必要的資料。
以上是如何使用 Include() 在實體框架中包含嵌套屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!