簡體   English   中英

Linq to SQL在一個查詢中更新多個記錄

[英]Linq to SQL update multiple records in one query

給定代碼:

var q = db.TranslationProjectKeys.Where(c => c.ProjectID == forProject.ID);
foreach (var key in q)
{
    key.Live = false;
}
db.SubmitChanges();

如果我運行SQL Server Profiler,它將顯示數十個UPDATE.... SQL語句。 我相信,如果使用一條UPDATE語句執行此查詢,則速度會更快:

UPDATE TranslationProjectKeys SET Live = 0 WHERE ProjectID = x

有沒有一種方法可以使查詢以這種方式執行?

我小心使用db.ExecuteCommand("...")因為我知道可以緩存上下文,這可能會導致一些錯誤。

您可以使用EntityFramework.Extended 您可以執行多個更新。 例如

var q = db.TranslationProjectKeys.Where(c => c.ProjectID == forProject.ID).Update(c => new TranslationProjectKey{ Live  = false })

linq to sql沒有內置的批量更新功能(除非已更改)。 您可以像這樣手動執行命令

dataContext.ExecuteCommand("UPDATE TranslationProjectKeys SET Live = 0 WHERE ProjectID = {0}", x);

或者,如果你想獲得幻想,你可以嘗試實現你自己喜歡的大量更新功能, 文章顯示,但它是在深度和復雜的(雖然它是可以做到的)更多

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM