2011-12-21 29 views
2

我有下面的代码 - truck_mng是作为数据我需要更新一条记录:MVC#LINQ到SQL的SubmitChanges无法正常工作

public ActionResult Edit(Truck_Mng truck_mng) 
    {  
     if (ModelState.IsValid)  
     { 
     DataContext.SubmitChanges();   
     return RedirectToAction("Index");  
     } 
     return RedirectToAction("index"); 

}

记录没有更新。任何想法?该表具有主键。

+1

我没有看到任何更改。 – SLaks 2011-12-21 15:40:42

回答

2

我猜Truck_Mng是你的DataContext实体类吗?

您必须先将实体附加到您的DataContext,因为MVC框架的modelbinder只是创建该类的新实例,以将表单数据传递给您的操作。

通过将第二个参数设置为true,您告诉L2S实体处于修改状态,但只有当您拥有用于实体版本检查的时间戳成员时才起作用。

最简单的方法应该是未经修改的附件,然后致电Refresh。这样L2S检查修改,并且您可以保存您的更改:

DataContext.Truck_Mng.Attach(truck_mng); 
DataContext.Refresh(RefreshMode.KeepCurrentValues, truck_mng); 
DataContext.SubmitChanges(); 
+0

感谢您的回复 - 我收到以下内容 - 如果某个实体声明了版本成员或没有更新检查策略,则该实体只能在没有原始状态的情况下进行修改。 – 2011-12-21 15:51:46

+0

我已经更新了我的答案。 – Jan 2011-12-21 15:57:22

+0

Jan,它说RefreshMode在当前上下文中不存在。我错过了其他什么?我可能需要顶部使用吗? – 2011-12-21 16:01:59