我正在尋找一種方法來使用實體框架編寫代碼來更新與條件匹配的1000條記錄。使用實體框架更新記錄而無需首先加載
在SQL它看起來像這樣
UPDATE [Items]
SET [IsInSeason] = 1
WHERE [Name] like '%summer%'
它沒有任何意義,我要加載的所有項目到內存只是此更新。
而且我想避免編寫常規SQL語句(如果可能)
我正在尋找一種方法來使用實體框架編寫代碼來更新與條件匹配的1000條記錄。使用實體框架更新記錄而無需首先加載
在SQL它看起來像這樣
UPDATE [Items]
SET [IsInSeason] = 1
WHERE [Name] like '%summer%'
它沒有任何意義,我要加載的所有項目到內存只是此更新。
而且我想避免編寫常規SQL語句(如果可能)
開箱即用,Entity Framework沒有這種能力。您需要在更新之前加載實體,或者需要使用原始SQL(作爲臨時聲明或通過調用存儲過程)。
然而,有幾個EF擴展包宣稱支持此批量更新和批量刪除方案。我還沒有與任何人的任何個人的經驗,而是給他們看看:
要與實體框架,我相信你將數據加載到內存中運行。你還有什麼要陳述的嗎?如果你真的不想把數據加載到內存中並讓SQL Server處理它(如果你使用SQL Server),你可以編寫一個從數據層調用的存儲過程。
你可以得到所有項目,並更新他們在循環這樣
(from x in dataBase.Items
where x.Name.Contains("summer")
select x).ToList().ForEach(xx => x.IsInSeason=1);
如果使用實體框架,你應該得到的所有項目爲對象,做nessecar變化,並保存它們。