我在使用Linq2Sql更新數據庫中的一行時遇到了一些問題。從模型更新數據庫行
在我的模型中,我有兩種方法可以更新並從控制器中保存,然後從我的視圖中接收更新後的模型。
我的模型的方法,如像:
public void Update(Activity activity)
{
_db.Activities.InsertOnSubmit(activity);
}
public void Save()
{
_db.SubmitChanges();
}
,並在我的控制器代碼喜歡就好:
[HttpPost]
public ActionResult Edit(Activity activity)
{
if (ModelState.IsValid)
{
UpdateModel<Activity>(activity);
_activitiesModel.Update(activity);
_activitiesModel.Save();
}
return View(activity);
}
我遇到的問題是,這種代碼插入一個新進入數據庫,即使我在提交時插入的模型項目包含主鍵字段。
我也嘗試將模型對象重新附加回數據源,但由於該項已存在,所以會引發錯誤。
任何指針正確的方向將不勝感激。
UPDATE:
我使用扶養注射到我的實例化DataContext對象如下:
IMyDataContext _db;
public ActivitiesModel(IMyDataContext db)
{
_db = db;
}
我可能是完全不正確的,但我會猜測問題在於你的datacontext如何實例化。 – Ahmad 2010-06-01 06:18:32
嗨Ahman。我的數據上下文使用DI實例化。我將用實例化代碼更新我的問題。 – 2010-06-01 08:46:09
雖然使用DI,但datacontext,transient,singleton,per-web-request等的生活方式是什麼。除非您已指定,否則您選擇的DI容器的默認生活方式可能會生效。我正在猜測這裏 :) – Ahmad 2010-06-01 09:28:03