2011-12-21 2 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

ответ

2

Я предполагаю, что Truck_Mng является классом сущности от вас DataContext?

Вы должны сначала присоединить объект к вашему DataContext, потому что модельный блок MVC-структуры просто создает новый экземпляр этого класса для передачи данных формы в ваше действие.

Устанавливая второй параметр на true, вы указываете L2S, что объект находится в измененном состоянии, но это работает только при наличии члена временной метки для проверки версии вашего объекта.

Простейший подход может быть подключен как немодифицированный, а затем позвонить Refresh. Таким образом, L2S проверяет изменения, и вы можете сохранить свои изменения:

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

Спасибо за ваш ответ - я получаю следующее: объект может быть присоединен только как измененный без исходного состояния, если он объявляет член версии или не имеет политики проверки обновлений. –

+0

Я обновил свой ответ. – Jan

+0

Jan, он говорит, что RefreshMode не существует в текущем контексте. Мне ничего не хватает? Есть ли в верхней части, что мне может понадобиться? –

Смежные вопросы