2011-12-21 4 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のエンティティクラスだと思いますか?

MVCフレームワークのモデルバインダーはフォームデータをアクションに渡すために、そのクラスの新しいインスタンスを作成するだけなので、エンティティをまずDataContextに添付する必要があります。

trueに設定すると、エンティティが変更された状態であることがL2Sに伝えられますが、エンティティのバージョンチェック用のタイムスタンプメンバーがある場合のみ動作します。

最も簡単なアプローチは、変更しないで接続してからRefreshと呼ぶことです。そうすればL2Sは変更をチェックし、変更を保存することができます:

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

あなたの応答に感謝します - 私は以下を取得します - エンティティは、バージョンメンバーを宣言しているか、更新チェックポリシーを持っていない場合にのみ元の状態なしで変更して添付できます。 –

+0

私は自分の答えを更新しました。 – Jan

+0

Jan、RefreshModeは現在のコンテキストに存在しません。私は他のものが足りない?私が必要とするかもしれないトップでの使用はありますか? –