【发布时间】:2011-09-07 05:19:33
【问题描述】:
首先我要提一下,这个问题只发生在 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();
}
}
}
【问题讨论】:
-
尝试替换“new db.Books();”用“db.Books.CreateObject();”
-
确保您正在检查正确的数据库。
-
@Davide:我按照你说的使用了 CreateObject,但问题仍然存在。
-
@Ladislav:是的,我确定。这个简单的程序只有一个数据库文件
-
请向我们展示您的最新代码
标签: .net visual-studio-2010 entity-framework-4 savechanges windows-applications