2

したがって、同じ PK を持つ受信オブジェクトの値を使用してデータベース内の行を更新したい場合は、どうすればよいでしょうか。これが必要な理由は、オブジェクトが非常に広範であり、データベースを更新する場合にフィールド名を変更する必要がある別の場所が作成されるためです。私の質問は、LINQ を使用してデータベースから取得したオブジェクトにオブジェクトを割り当てる方法です。明確にするために、私が話していることを示します。

//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();
}
4

1 に答える 1

5

やってみましたnewContext.YourEntity.Attach(YourAlreadyPopulatedObject)

これでは、レコードがデータベースに既に存在し、それを更新していることを Linqtosql に伝えるだけです。

于 2013-08-23T16:01:05.993 に答える