[英]Entity Framework Simple Report
我將如何使用實體框架編寫查詢,在其中我需要列出包含產品,類別和父類別的列的列表。 我還沒有弄清楚如何獲得父類別。 任何幫助表示贊賞。 到目前為止,我有以下內容:
from product in Products
select new { Ctg = (from prdCategory in ProductCategories
where prdCategory.Products.Contains(product)
select prdCategory.CategoryName).FirstOrDefault(),
Name = product.ProductName
ParentCtg = ...
}
好的,如果已經從您的數據庫中正確設置了所有關聯,那么這將是一個簡單的查詢:
var product = from p in context.Products
select new {
Name = product.ProductName,
CategoryNames = p.ProductCategories
.Select(c => c.CategoryName).ToList(),
ParentCategories = p.ProductCategories
.Select(c => c.ProductCategory2.CategoryName).ToList()
};
EF映射自引用關聯時 ,它會創建兩個相關的導航屬性,分別為ProductCategory1
和ProductCategory2
。 這兩個名稱都不是特別有用,這些導航屬性之一是指父類別或關系的0..1端。 另一個是指孩子或戀愛關系中的*。
要了解哪個是哪個,請右鍵單擊ProductCategory1,在屬性窗口中,ProductCategory1多重性是*(多),所以ProductCategory1代表為孩子或子類別的導航屬性(也很型的EntityCollection<ProductCategory>
)和其他一個-ProductCategory2-表示該類別的父類別,其類型為ProductCategory
。 對於您的查詢,我們對此感興趣。
除了-使您的查詢更具可讀性-您可以重命名ProductCategory1到小類和ProductCategory2到ParentCategory。
如果我正確地理解了您的架構,那應該是簡單獲取產品列表的簡單情況,並且您的顯示列表應該只顯示“ thisProduct.Category.Name”列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.