2012-08-15 75 views
2

在我的數據庫中,我有一個要更新的項目。我試圖做這樣的事情,但它不工作:linq擴展方法,如何更新單個項目的多個屬性?

db.Items.Where(t => t.Id == itemId).Select(t => 
      { 
       t.CurrentValue = 99; 
       t.TotalValue = 999; 
      }); 

什麼工作是這樣的代碼,但我認爲這是無效的(我錯了?):

db.Items.Single(t => t.Id == itemId).TotalValue = 999; 
db.Items.Single(t => t.Id == itemId).CurrentValue = 99; 
db.SaveChanges(); 

有用單個查詢更新單個對象的不同屬性的方法?

回答

3

你是對的,多次運行db.Items.Single(...)可能不是最理想的。

調用它一次,然後引用其性質應該是更高效:

var item = db.Items.Single(t => t.Id == itemId); 
item.TotalValue = 999; 
item.CurrentValue = 99; 
db.SaveChanges(); 
+0

哦。這工作完美。謝謝。現在我想知道,它如何知道如何連接項目對象與數據庫對象?我沒有在任何地方指定它。 – ojek 2012-08-15 13:27:09