Pages

LINQ 查詢練習

Feb 11, 2015

這是一個多對多關聯的資料表下,建立 Entity Framework 後採用 LINQ 查詢資料的範例。



 

資料關聯說明

建立 品料(MATERIAL) 與 形狀(MSHAPE) 兩個獨立資料表,單一種品料具有多種形狀的屬性,不同品料可對應相同的形狀。

在 PowerDesigner CDM 中設計兩個 Entity 並設定為多對多關聯,如下圖:

 

image

 

產生 PDM 後會發現有三個資料表,如下圖:

image

 

將資料結構與資料匯入資料庫中 (SQL Script)

image

 

使用 Entity Framework 從資料庫建立模型,會發現與 CDM 的圖形類似

image

 

基本 LINQ 查詢

兩個基本 LINQ 的查詢練習:

  • 針對單一品料,列出其已選取的形狀有幾種 ?
  • 針對單一品料,列出其尚未選取的形狀有幾種 ?

參考作法 連結

 

其中 ProxyCreationEnabled 屬性會影響第一個查詢是否要下 Include("MSHAPE") 的指令

public List GetShapesWithLazyLoading(int materialId)
{
db.Configuration.ProxyCreationEnabled = true;

var collection = db.MATERIAL.Find(materialId).MSHAPE;
return new List(collection);
}

public List GetShapesWithoutLazyLoading(int materialId)
{
db.Configuration.ProxyCreationEnabled = false;

var collection = db.MATERIAL.Include("MSHAPE")
.FirstOrDefault(r=>r.ID==materialId).MSHAPE;

return new List(collection);
}

完整範例下載 

 

 

相關連結

ProxyCreationEnabled=false 測試 / Kim