首先我应该提一下,这个问题只发生在 Windows 窗体应用程序中,并且 Web 模式下的相同程序(例如 MVC3)完美运行。
几天前,我使用带有 SQL Express 数据库的 Visual Studio 2010 Ultimate 编写了一个非常简单的 Windows 窗体程序。我通过选择 Add > New item > Service-Based database 和基于此数据库的实体数据模型以相同的方式添加了数据库。我使用实体框架向表中添加一些新记录。我之前用 VS 2008 SP1 做过这样的事情没有问题,所以我也做了同样的事情。程序编译并运行没有错误,我输入了一些新数据。退出程序后,我回到数据库,什么也没发生。我输入的任何信息都没有被保存。我一步步调试程序,一切正常。下面的代码与一个具有上述问题的非常简单的程序有关。数据库有一张表(书):
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();
}
}
}