保存对象的更改,而不是当前db上下文的一部分

时间:2011-09-21 02:25:06

标签: linq-to-sql

我有一个Web服务来获取对象,例如

public Blah GetBlah(int blahID) {
   var db = new BlahContext...
}

和另一个网络服务

public UpdateBlah(int blahID) {
    var db = new BlahContext...
    var blah = GetBLah(blahID);
    blah.someVariable = false;
    ... // how do I save this object?
}

但我不认为我可以做SubmitChanges,因为对象不是在同一个上下文中创建的。

1 个答案:

答案 0 :(得分:0)

当您致电UpdateBlah时,您需要将对象作为参数传递,以便您可以更新数据。

然后您可以选择两种选择:

1。映射(手动或自动)

public UpdateBlah(object blahUpdated) {
    var db = new BlahContext...
    var blah = GetBLah(blahID);
    // manually mapping
    blah.someVariable = blahUpdated.someVariable;
    // or using some kind to automapper (automapper.codeplex.com)
    ... 
    db.SubmitChanges()
}

2。附

您可以attach将对象添加到新的datacontext

public UpdateBlah(object blahUpdated) {
    var db = new BlahContext...
    db.blahs.Attach(blahUpdated);
    db.SubmitChanges()
}