2012-02-17 18 views
0

我正在使用LINQ to SQL,並有一個名爲Product with 20列的數據庫表。產品表映射到LINQ to SQL元數據中的Product類。如何指定/過濾使用LINQ to SQL時應填充哪些表列?

我想使用我的dbContext並檢索一些產品記錄,但只填充10列而不是全部20列。

如何才能指定應該使用LINQ to SQL(或EF)返回/填充哪些列?

我知道一種方法將使用存儲過程,但這是這個問題。

感謝,

回答

4

您通常使用匿名類爲:

db.Products.Where(... filter ...).Select(item => new 
{ 
    Field1 = item.Field1, 
    Field2 = item.Field2, 
}); 

只有田野上你包括將被選中。如果您打算在此數據結構傳遞給其他功能或返回它,你需要的子場設定一個具體的類定義,如:

class SmallerEntity 
{ 
    public something Field1; 
    public something Field2; 
} 

而且你可以在你的SELECT語句初始化這個:

db.Products.Where(... filter ...).Select(item => new SmallerEntity 
{ 
    Field1 = item.Field1, 
    Field2 = item.Field2, 
}); 

我不推薦半填充現有類的做法。這使得你的狀態空間不必要的複雜,並且允許在你的代碼中出現更多的錯誤。嘗試在自己的類中包含更小的數據子集。

+0

你可以做到這一點,但你應該知道你沒有可能將更改提交回數據庫。所以只要它是隻讀的,這個解決方案就沒有問題。 – Pleun 2012-02-17 13:00:10