[英]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.