2011-12-21 9 views
0

MVC 3 Frameworkを使用してWebサイトを構築しています。データアクセスを処理するためのLinq to SQL DataContextを持っています。私が学んだことは、ユーザーがフォームを送信したときのフォーム情報で、MVC関数はデータをモデルオブジェクトにマップできます。私が間違っているのhappens.WhatDataContextにモデルを接続してデータベースを更新する方法

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Edit(Entity model) 
    { 

     if(ModelState.IsValid) 
     { 
      _dataContext.Attach(model); 
      _dataContext.SubmitChanges(); 
      return RedirectToAction("Index"); 
     } 
     return View("Edit", model); 
    } 

しかし、何も: このような何か:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Edit(Entity model) 

しかし、私はここに、データコンテキストオブジェクトに、このモデルオブジェクトを取り付けると問題を抱えているが、私は何をやっているのですか?

答えて

0

問題は、_dataContextがエンティティが変更されたことを知らないということです。 は、だから、本当のように変更セットoverloadを使用しなければならないでしょう:

_dataContext.Attach(model, true); 
+0

私はこのアプローチを試みたが、それは、企業がバージョンフィールドを持つべきであると述べています。 – Beatles1692

+0

'Entity'に[バージョンキー](http://msdn.microsoft.com/en-us/library/bb386957.aspx)が定義されていますか?別のアプローチは、元のエンティティをコンテキストから取得し、変更したもの( 'model'から)とそれに続いて' SubmitChanges'を使って更新します。 –

+0

私はオリジナルのアプローチを試みました。問題は次のとおりです。最初に元のバージョンをdatacontextにロードしなければなりません。また、更新されたバージョンをアタッチしようとすると、すでに同じキーを持つオブジェクトがコンテキスト(元のもの) – Beatles1692

関連する問題