如何使用LINQ to SQL设置整个对象?

时间:2013-08-23 15:56:31

标签: c# linq

因此,如果要使用具有相同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();
}

1 个答案:

答案 0 :(得分:5)

您是否尝试过newContext.YourEntity.Attach(YourAlreadyPopulatedObject)

在此,您只需告诉Linqtosql该记录已存在于数据库中并且您正在更新它。