2016-05-12 42 views
2

我正在尋找一種方法來使用實體框架編寫代碼來更新與條件匹配的1000條記錄。使用實體框架更新記錄而無需首先加載

在SQL它看起來像這樣

UPDATE [Items] 
SET [IsInSeason] = 1 
WHERE [Name] like '%summer%' 

它沒有任何意義,我要加載的所有項目到內存只是此更新。

而且我想避免編寫常規SQL語句(如果可能)

回答

5

開箱即用,Entity Framework沒有這種能力。您需要在更新之前加載實體,或者需要使用原始SQL(作爲臨時聲明或通過調用存儲過程)。

然而,有幾個EF擴展包宣稱支持此批量更新和批量刪除方案。我還沒有與任何人的任何個人的經驗,而是給他們看看:

1

要與實體框架,我相信你將數據加載到內存中運行。你還有什麼要陳述的嗎?如果你真的不想把數據加載到內存中並讓SQL Server處理它(如果你使用SQL Server),你可以編寫一個從數據層調用的存儲過程。

0

你可以得到所有項目,並更新他們在循環這樣

(from x in dataBase.Items 
     where x.Name.Contains("summer") 
     select x).ToList().ForEach(xx => x.IsInSeason=1); 

如果使用實體框架,你應該得到的所有項目爲對象,做nessecar變化,並保存它們。