2012-04-17 3 views
0

私はMVCフレームワークを初めて使用しています。私はMVC 4ベータ版を使用していますが、今は問題があります。私はたくさんのグーグルを見つけましたが、私の問題の解決策を見つけることができませんでしたので、ここで私はいくつかのことが助けてくれることを願っています。私の問題は、私は両方のテーブルは、任意のプロパティ上の任意の関係が含まれていないDB2以外は同じ性質を持つ2つのデータベースMVC 4ベータを使用してテーブル内のレコードを変更することはできませんが、レコードを追加できます。

Database1 db1=new Database1(); 
    Database2 db2=new Database2(); 

    tbl1 tb1=new tbl1(); /// from db1 
    tbl2 tb2=new tbl2(); // from db2 

を持っています。

はここで面白いのは、私は別のコントローラに同じ方法を使用していますし、それが魅力のように働いている私のコード

public bool Save(int id=0){ 
    tb1 = db1.tbl1.Single(tr => tr.id == id); 

    tb2.a=tb1.a; 
    tb2.b=tb1.b; 
    tb2.c=tb1.c; 
    tb2.d=tb1.d; 
    tb2.e=tb1.e; 

    if (db2.tbl1.SingleOrDefault(tr => tr.rid == id) == null) 
      { 
       db2.tbl1.AddObject(tb2); /// This works perfectly fine 
      } 
      else 
      { 

       db2.tbl1.Attach(tb2); /// This gives me an error Object Reference does not set to an instance of an object 
       db2.ObjectStateManager.ChangeObjectState(tb2, EntityState.Modified); 

      } 
      db2.SaveChanges(); 
    } 

です。何が起こっているのか、それをどのように解決するのかというご意見は非常に役に立ちます。

おかげ

+0

これは2日前ですが、誰も私の質問を見ていませんでした。 – Riy

答えて

0

私は多くのことをGoogleで検索し、MSDNの解決策を発見しました。ここで私は、私はちょうどライン

db2.tbl1.Attach(tb2); 

を取り出して、それが魅力のように働いていた問題を解決する方法です。

ここでは何が起こっているのか少し説明していますが、存在するかどうかにかかわらずDB内のレコードを検索すると、存在する場合は自動的にDBcontextに接続されます。この

このレコードを保存します。

db2.SaveChanges(); 

データベースで見つかったレコードがない場合は、あなたは db2.AddObject(TB2)としてDB2に新しいdbcontextを追加する必要があります。

レコードを保存します。

私はこれが何かを助けることを望みます。

リヤサット

関連する問題