Linq to sql 从模型更新数据库行
我在使用Linq2Sql更新数据库中的一行时遇到了一些问题 在我的模型内部,我有两种方法来更新和保存我的控制器,然后控制器从我的视图接收更新的模型 我的模型方法如下:Linq to sql 从模型更新数据库行,linq-to-sql,asp.net-mvc-2,Linq To Sql,Asp.net Mvc 2,我在使用Linq2Sql更新数据库中的一行时遇到了一些问题 在我的模型内部,我有两种方法来更新和保存我的控制器,然后控制器从我的视图接收更新的模型 我的模型方法如下: public void Update(Activity activity) { _db.Activities.InsertOnSubmit(activity); } public void Save() { _db.SubmitChanges(); } 控制器中的代码如下所示: [HttpPost] publ
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);
}
在使用InsertOnSubmit方法的情况下应该有一个insert,这是一种预期的行为
我们建议在Update()方法实现中使用Attach()方法。如果实体中有IsVersion列,那么一切都很简单,在另一种情况下,您还必须将原始值传递给Attach调用。更多信息可用。我通过在更新方法中重新获取和更新我的对象解决了此问题 我没有尝试重新连接或获取数据上下文,而是意识到它是属于它的同一个对象,而我基本上是这样做的:
IMyDataContext _db;
public ActivitiesModel(IMyDataContext db)
{
_db = db;
}
[HttpPost]
public ActionResult Edit(Activity activity)
{
Activity myActivity = activitiesModel.getActivityById(activity.id);
myActivity.name = activity.name;
myActivity.date = activity.date;
_dbContext.SubmitChanges();
return View(activity);
}
这不是我的确切代码,更确切地说,我为datacontext创建了另一个分部类,并将更新代码存储在其中。我可能完全不正确,但我想问题在于datacontext的实例化方式。嗨,Ahman。我的数据上下文是使用DI实例化的。我将用实例化代码更新我的问题。虽然使用DI,但datacontext、transient、singleton、per web请求等的生活方式是什么。除非您指定,否则您选择的DI容器的默认生活方式可能有效。我在这里猜测:)