2011-12-08 16 views
0

LINQ to SQLのdatacontextにCodeというテーブルがあります。私はModelsフォルダにCodesというクラスもあります。私がしたいことは、更新されたオブジェクトコードを自分のデータベーステーブルコードに保存することです。これは可能ですか?データベース内のMVC Linq to SQL更新オブジェクト

私のコントローラでは、編集したオブジェクトをモデルに渡します。マイCodesRepositoryファイルには、これを含んでいます

public Codes EditCode(Codes CodeToEdit) 
     { 
      private EventsDataContext _db = new EventsDataContext(); 
      Codes C = new Codes(); 
      C = CodeToEdit; 

      _db.Codes.InsertOnSubmit(C); //error here, something about invalid arguments 
      //InsertOnSubmit is for adding a new object, but I don't know the syntax 
      // for editing an existing object. 

      _db.SubmitChanges(); 


     } 

これはおそらく、誰かが正しい方向に私を指すことができますので、これを行うための正しい方法ではないでしょうか?私はコードと呼ばれるクラスが必要なのでしょうか、何とか私のデータベーステーブルを使用する必要がありますか?ありがとう。


ソリューション:私は、Entity FrameworkのにLINQ to SQLはから変更することを決めた、それははるかに良い作品。この方法では、私は自分のCodesクラスを定義する必要はありません。データベースからまっすぐに来て、Codesクラスファイルを削除することができたからです。

答えて

1

データベース内の既存の行に対応するオブジェクトを取得する場合は、DataContext.Attachを使用する必要があります。 Linq-to-sqlのオプティミスティック並行処理が機能するには、元の未保存のオブジェクトを使用可能にするか、またはデータベースにTimeStampという列が必要です。後者のほうが優先されます。これは、おそらく1つの余分なフィールドが処理されるだけです(おそらくWebフォームの隠しフィールドを通じて)。

+0

Entity FrameworkではなくLinq To SQLに答えるための+1!乾杯。 – Craig

+0

私はこれを試しました:_db.Codes.Attach(CodeToEdit);しかし、私はまだエラーが発生します。私は私のオブジェクトコードのインスタンスを取得し、私のコードデータベーステーブルに保存することはできないと思う。 – MikeB55

+0

http://msdn.microsoft.com/en-us/library/bb546187.aspxには、添付ファイルとオプティミスティックな同時実行性を処理する方法が記載されています。 –

関連する問題