2013-08-23 38 views
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(); 
} 

回答

5

你試過newContext.YourEntity.Attach(YourAlreadyPopulatedObject)

在此你只需告訴Linqtosql該記錄已經存在於數據庫中,你正在更新它。

+0

這就是我一直在努力去工作,但它提交的形式,因爲在代碼中通過確定,但沒有什麼被添加到數據庫。我已經確認RecFoo確實有一個ID,不知道問題是什麼。 – Coomanperson

+0

您需要在保存更改之前將EntityState設置爲已修改。 – Nilesh

+0

檢查[這](http://stackoverflow.com/questions/386211/linq-to-sql-submitchanges-not-updating-fields-why)後,可能是[這](http://geekswithblogs.net/ michelotti/archive/2007/12/25/117984.aspx)以及 – Nilesh