最初に、この問題はWindowsフォームアプリケーションでのみ発生し、たとえばMVC3を使用したWebモードの同じプログラムが完全に機能することを述べておく必要があります。
数日前、SQLExpressデータベースを備えたVisualStudio2010Ultimateを使用して非常に単純なWindowsフォームプログラムを作成しました。同様に、[追加]>[新しいアイテム]>[サービスベースのデータベース]とこのデータベースに基づくエンティティデータモデルを選択して、データベースを追加しました。テーブルにいくつかの新しいレコードを追加するためにEntityFrameworkを使用しました。以前、VS 2008 SP1でこのようなことを問題なく行ったことがあるので、同じことを行いました。プログラムはコンパイルされ、エラーなしで実行され、いくつかの新しいデータを入力しました。プログラムを終了した後、データベースに戻りましたが、何も起こりませんでした。私が入力した情報はどれも保存されていませんでした。プログラムを段階的にデバッグしましたが、すべて問題ありませんでした。以下のコードは、上記の問題を抱えた非常に単純なプログラムに関連しています。データベースには1つのテーブル(本)があります:
namespace Book
{
public partial class BookForm : Form
{
BookDatabaseEntities db = new BookDatabaseEntities();
public BookForm()
{
InitializeComponent();
}
private void saveButton_Click(object sender, EventArgs e)
{
Book bookToCreate = new Book();
bookToCreate.Id = Guid.NewGuid();
bookToCreate.Title = titleTextBox.Text;
db.Books.AddObject(bookToCreate);
db.SaveChanges();
}
}
}
誰か助けてくれたらとてもありがたいです。前もって感謝します。
................。
編集後:
namespace Book
{
public partial class BookForm : Form
{
//BookDatabaseEntities db = new BookDatabaseEntities();
public BookForm()
{
InitializeComponent();
}
private void saveButton_Click(object sender, EventArgs e)
{
var db = new BookDatabaseEntities();
var bookToCreate = db.Books.CreateObject();
//Book bookToCreate = new Book();
bookToCreate.Id = Guid.NewGuid();
bookToCreate.Title = titleTextBox.Text;
db.AcceptAllChanges();
db.Books.AddObject(bookToCreate);
db.SaveChanges();
}
}
}