有點簡單的問題,但我完全失去了如何處理這個問題。LINQ到SQL更新多個記錄
CREATE TABLE Contract (
id int PRIMARY KEY,
batchId int NOT NULL REFERENCES ContractBatch (id)
campaignId int NULL REFERENCES Campaign (id)
)
這是我的業務模型中對Linq2Sql模型的簡化表。現在我需要做更新查詢是這樣的:
UPDATE Contract SET campaignId = 1 WHERE batchId = 5
這意味着,有可能爲同一ContractBatch
更多的記錄,我需要設置Campaign
爲他們所有。是否有可能以一些簡單的方式將此查詢轉換爲Linq表達式?只有我能夠找到的方式是獲取所有那些ContractBatch
的記錄,然後在循環中逐一更新。這不是非常有效。
var campaignId = 1;
var batchId = 5;
using(var dataContext = new DataModel.ModelDataContext()) {
dataContext.Contracts
.Where(c => c.BatchId == batchId)
// this is obviously my "wish to have" method
.ForEach(c => c.CampaignId = campaignId)
dataContext.SubmitChanges()
}
我已經考慮在老辦法做,用手執行該查詢。我不喜歡它,但它可能比運行數百個更新查詢要好。
謝謝。所以這是我的想法。我只會抽出那些老式的文本查詢並忘記它。 – FredyC
最簡單的方法是使用DataContext.ExecuteQuery方法 - 保存所有安裝的東西。 –