我已經manay一對多的兩個實體之間的關係:分類< - >產品EF - 如何防止渴望加載來加載所有嵌套實體
public class CategoryMaster
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public virtual List<SubCategoryMaster> SubCategories { get; set; }
public List<ItemMaster> Items { get; set; }
}
public class ItemMaster
{
public long Id { get; set; }
public string Name { get; set; }
public List<CategoryMaster> Categories { get; set; }
}
每當我試着明確的負載相關項目所有/某些類別,它給了我
- 所有相關項目
- 相關類別對這些項目
相關的項目對那些CA tegories等等...嵌套/循環引用
db.CategoryMaster .Include(x=>x.Items) .Include(x=>x.SubCategories.Select(y=>y.Items)) .ToList();
因此導致下面的錯誤,同時它序列化到JSON與Json.Encode * .cshtml();
A circular reference was detected while serializing an object of type 'GoGreen.Data.Entities.SubCategoryMaster'.
,因爲我已經禁用延遲加載在性能水平,我不希望它在任何時間點裝載所有嵌套實體(循環引用)。有沒有辦法加載所有相關的一級記錄,即類別和相關項目。
Related question - 但Iodon't不想去任何建議的兩種方式。
注意:我更感興趣知道爲什麼EF的行爲如此。這對我來說似乎是一個錯誤。
檢查答案,並告訴我,如果這有助於你。 –
你應該用Json.Net替換json序列化器並設置參考循環處理。 –