0

Entity Framework を使用した非常に単純な Windows フォーム プロジェクトがあります。

「フォーム」の「データソース」タブからテーブルをドラッグするだけで、「DataGridView」と「BindingSource」が生成されます。

データが正常にバインドされ、プロジェクトを実行すると、「DataGridView」にデータが正しく入力されていることがわかり、「DataGridView」からセルの値を更新できます。

問題は、「DataGridView」に行を挿入できないことです。

問題を解決するのに役立つことを願って私が書いたいくつかのコードを次に示します。

    Teachers_DBEntities context = new Teachers_DBEntities();

    private void SaveItem_Click(object sender, EventArgs e)
    {
        context.SaveChanges();
        MessageBox.Show("saved successfully");
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        teachers_tableBindingSource.DataSource = context.teachers_table.ToList();
    }

コメントの更新

「BindingSource」をテストしたところ、「DataGridVeiw」に新しいレコードが挿入されているかどうかは正常に認識されていましたが、呼び出したときにデータベースに変更が適用されませんでしたcontext.savechanges();

context.savechanges()セルを更新するとうまくいきますが、「DataGridView」に新しいレコードを挿入しようとするとうまくいきません。

私のedmxファイルでは、すべての列を正しくマップし、主キーStoreGeneretedPatternのプロパティがに設定されIdentity、そのEntity Keyプロパティがに設定されていtrueます。SQL auto-incrementServer データベース ファイルのプロパティは に設定されていtrueます。

どんな助けでも大歓迎です。

4

4 に答える 4

2

context.savechanges() は、セルを更新すると正常に機能しますが、「DataGridView」に新しいレコードを挿入しようとすると機能しません。

「うまくいかない」とはどういう意味ですか?新しいレコードがデータベースに表示されませんか? もちろん、そうはなりません。

この行で

teachers_tableBindingSource.DataSource = context.teachers_table.ToList();

DataSourceのコンテキストへの接続を切断しています。それに挿入された新しいアイテムはteachers_table、 ではなく、そのList上に作成されたあなたに挿入されます。

于 2012-08-03T07:40:27.633 に答える
1
using (var context = new YourEntities ()) 
{
     var dpt = new yourObject { Name = "Test" };
     context.yourObject.Add(dpt);
     context.SaveChanges(); 
}

コンテキストにオブジェクトを追加できません

于 2012-08-03T07:47:04.640 に答える