2
因此,如果要使用具有相同PK的接收對象中的值更新數據庫中的某一行,我們將如何執行此操作。這是需要的原因是因爲對象是相當廣泛的,這將創建另一個地方,我們必須更改字段名稱,如果我們更新數據庫。所以我的問題是如何將一個對象分配給使用LINQ從數據庫檢索的對象?我將展示我要說明的內容。如何使用LINQ to SQL設置整個對象?
//Foo Object Received up here, called RecFoo
using (var newContext = new FooDataContext())
{
var obj = newContext.T_Foo.Single(x=>x.Id == RecFoo.id);
//Set obj = recFoo (Directly)
newContext.SubmitChanges();
}
我知道我們可以設置每個屬性(obj.Name = RecFoo.Name ...),但有什麼辦法,我們可以使用PK ID只是把接收到的對象,並指定其所有RecFoo內部的值?
編輯:解
using (var newContext = new FooDataContext())
{
//var obj = newContext.T_Foo.Single(x=>x.Id == RecFoo.id);
//Set obj = recFoo (Directly)
newContext.T_Foo.Attach(recFoo);
newContext.Refresh(System.Data.Linq.RefreshMode.KeepCurrentValues, recFoo);
newContext.SubmitChanges();
}
這就是我一直在努力去工作,但它提交的形式,因爲在代碼中通過確定,但沒有什麼被添加到數據庫。我已經確認RecFoo確實有一個ID,不知道問題是什麼。 – Coomanperson
您需要在保存更改之前將EntityState設置爲已修改。 – Nilesh
檢查[這](http://stackoverflow.com/questions/386211/linq-to-sql-submitchanges-not-updating-fields-why)後,可能是[這](http://geekswithblogs.net/ michelotti/archive/2007/12/25/117984.aspx)以及 – Nilesh