我正在嘗試在Linq中進行更新。更新LINQ中的對象
public myFunc(MyItem newItem)
{
using(var db = new myDataContext())
{
var item = (from o in db.myTable where o.id == myId select o).First();
item = newItem;
db.SubmitAllChanges();
}
}
這不會更新對象,我猜item = newItem更改項目引用其他。如果我更改單個字段(item.Name = newItem.Name等),更改會反映出來,但是我不想將MyItem類的內容分散到多個位置以降低可維護性。有沒有辦法讓項目= newItem複製一個字段的字段的基礎?
此外,MyItem與另一個表有關係,我想將newItem中的從屬項更新爲item。 (FWIW,沒有增加或刪除,只是更新。)是否有標準化的過程?
感謝您的幫助。
在我看來,這是一個非常普遍的過程。沒有自動的方法來做到這一點? 順便說一句,在LINQ查詢很棒的提示。我一直都在做這種事情,而你的事情更加簡潔。毫無疑問,你的建議將會顯着影響我編寫代碼的方式......非常感謝。 – 2010-10-04 16:48:46
@Mike:我不認爲它*特別*常見。通常情況下,如果你想更新一個實體批發,你會先取它,編輯它,然後重新連接。 – 2010-10-04 16:54:15
這是一個有趣的評論,我在代碼中考慮過它。爲什麼我必須這樣做,是在客戶端使用JavaScript編輯項目,然後以JSON形式提交。在我的例子中,JSON被解碼並且該對象是「newItem」。 對此有沒有更好的方法? – 2010-10-04 18:05:45