LINQ 查詢練習
這是一個多對多關聯的資料表下,建立 Entity Framework 後採用 LINQ 查詢資料的範例。
資料關聯說明
建立 品料(MATERIAL) 與 形狀(MSHAPE) 兩個獨立資料表,單一種品料具有多種形狀的屬性,不同品料可對應相同的形狀。
在 PowerDesigner CDM 中設計兩個 Entity 並設定為多對多關聯,如下圖:
產生 PDM 後會發現有三個資料表,如下圖:
將資料結構與資料匯入資料庫中 (SQL Script)
使用 Entity Framework 從資料庫建立模型,會發現與 CDM 的圖形類似
基本 LINQ 查詢
兩個基本 LINQ 的查詢練習:
- 針對單一品料,列出其已選取的形狀有幾種 ?
- 針對單一品料,列出其尚未選取的形狀有幾種 ?
參考作法 連結
其中 ProxyCreationEnabled 屬性會影響第一個查詢是否要下 Include("MSHAPE") 的指令
public ListGetShapesWithLazyLoading(int materialId)
{
db.Configuration.ProxyCreationEnabled = true;
var collection = db.MATERIAL.Find(materialId).MSHAPE;
return new List(collection);
}
public ListGetShapesWithoutLazyLoading(int materialId)
{
db.Configuration.ProxyCreationEnabled = false;
var collection = db.MATERIAL.Include("MSHAPE")
.FirstOrDefault(r=>r.ID==materialId).MSHAPE;
return new List(collection);
}
完整範例下載