當我運行下面的代碼:「嘗試附加或添加一個不是新的實體,可能是從另一個DataContext加載的,不支持。」
public ActionResult Complete()
{
try
{
VeriTabanDataContext db = new VeriTabanDataContext();
db.Persons.InsertOnSubmit(_person);
db.SubmitChanges();
return View(_person);
}
catch (Exception ex)
{
return RedirectToAction("Error", ex);
}
}
我得到以下異常,上的SubmitChanges();
"An attempt has been made to Attach or Add an entity that is not new, perhaps having been loaded from another DataContext. This is not supported."
- 這裏的「_person」對象從會議所作,是一個良好的信譽。注意:_person是多步向導的結果,這是我將新Person對象添加到數據庫的地方。
- 我的人表有9個關係,它不是我可以爲他們每個人添加版本列,如一些怪傑建議的
- 我已經調查了這個問題很多,並花費了2天對它仍然couldn解決不了。其他建議的一些解決方法不能解決我的問題,而其他解決方案似乎只是骯髒的解決方法。考慮到Person類有很多關係,並且向表中添加列也不行,專家是否有解決此問題的良好解決方案?
- 我還想指出,我試過使用'db.Persons.Attach(_person)'並設置db.DeferredLoadingEnabled = false;這一次我沒有得到任何異常,但數據不會保存到DB
我還沒有嘗試過,但是這將解決問題,如果我的對象是從上下文中取出並試圖插入到另一個上下文中。但是我的對象是新創建的,並沒有被任何背景跟蹤。所以我懷疑這是行不通的。我只想在嘗試之前說出我的意見,如果我的想法被證明是錯誤的,那麼稍後再嘗試。 – 2009-11-14 10:28:31
應該工作,因爲您將只有一個datacontext實例,目前看起來您正在每個控制器操作中創建多個實例。 – Mark 2009-11-14 10:55:15
這解決了我的問題。謝謝。 – 2009-11-16 10:20:08