0

データベースに新しいデータを追加しようとしています。これが私のコードです。

// This is the dbContext
private BugTrackerDBContainer db = new BugTrackerDBContainer();

//The objet with its properties
public static Developper devAdded = new Developper();
devAdded.Name = txb_name.Text;
devAdded.FirstName = txb_firtname.Text;

// Add to the database
db.AddToDevelopper(devAdded);
db.SaveChanges();

私の問題は、一度起動すると正常に動作しますが、2回このエラーが発生することです:

エンティティ オブジェクトは、IEntityChangeTracker の複数のインスタンスによって参照できません。

それはなぜです ?

助けてくれてありがとう

4

3 に答える 3

2

関数と変数の宣言が混在しているのは何ですか?
同じ静的インスタンス オブジェクトを同じ DataContext に 2 回追加しようとすると、失敗します。

  • 静的変数を宣言しないでください。悪いです。
  • Context をフィールドとして宣言しないでください。ブロックを使用してローカル変数として使用します。
  • テキストボックスなどの UI 要素へのアクセスとデータベースの操作を混在させないでください。アプリケーションでレイヤーを作成します。

例 :

public void AddDevelopperButton_Click(object sender, EventArgs e)
{
    this.AddDevelopper(txb_name.Text, txb_firtname.Text);
}

public Developper AddDevelopper(string name, string firstName)
{
    Developper devAdded = new Developper();
    devAdded.Name = name;
    devAdded.FirstName = firstName;

    using(BugTrackerDBContainer db = new BugTrackerDBContainer())
    {
        db.AddToDevelopper(devAdded);
        db.SaveChanges();
    }
    return devAdded;
}
于 2013-04-24T12:42:27.503 に答える
0

私の提案は次のとおりです。

A: 基本的なプログラミングを学ぶ

static を宣言する考えられる理由:

public static Developper devAdded = new Developper();

B: その後、EF やその他のフレームワークについて調べ始めます。

于 2013-04-24T15:13:21.047 に答える