更新在另一个datacontext中创建的对象

时间:2010-12-08 19:17:51

标签: c# linq linq-to-sql datacontext

我非常需要你的帮助。我想更新在另一个datacontext中创建的对象; 这是我的代码。 Insert语句运行良好但我无法编写更新代码

var dataContext = new ReconNewDataContext();           
        if (Id == 0)
        {
            var item = this;
            dataContext.RequestIO.InsertOnSubmit(item);
            dataContext.SubmitChanges();
            Id = item.Id;
        }
        else
        {
            var item = this;
            //update object
        }        

我读过 Linq2SQL: Update object not created in datacontext

我试过使用.Attach(this).Attach(this,true).Attach(this,oldObjectFromBase)但总是出错。

我知道我可以从数据库中获取对象并手动从修改后的对象传输数据,但会有新字段。这意味着我必须始终在Save()方法中附加这些新字段。

是否有任何“漂亮”方法来更新在另一个datacontext中创建的对象?

2 个答案:

答案 0 :(得分:0)

查看此文章:http://omaralzabir.com/linq_to_sql__how_to_attach_object_to_a_different_data_context/

此外,在您的示例中,要进行更新,请尝试执行以下操作:

var item = new ObjectBeingUpdated();
//copy over properties from old object to new object, make sure pk's match

//Attach this new object

我相信我的同事也有类似的事情。

更新:请查看此处以获取有关附件的更多信息:http://blogs.msdn.com/b/dinesh.kulkarni/archive/2007/10/08/attach-if-you-have-something-detached.aspx

答案 1 :(得分:0)

您可以使用以下模式:

  1. 从存储库中获取现有对象
  2. 使用AutoMapper复制属性
  3. 保存您的物品。