我在使用EF,DbContext和SaveChanges()方法时遇到了一个奇怪的问题。我使用的是EF 5,.NET 4.5和LocalDB。我正在使用Code First EF并让它自动为我创建数据库。
在没有调用db.SaveChanges()调用之后,问题就出现了。这是一个例子:
private void Form1_Load(object sender, EventArgs e)
{
using (var db = new DataLayer.DataContext())
{
Group g = new Group {
Id = 0,
Gid = "019282",
Name = "Admin"
};
db.Groups.Add(g);
db.SaveChanges();
}
MessageBox.Show("Testing");
}
MessageBox甚至没有显示。知道发生了什么事吗?它没有抛出任何错误,所以我甚至无法调试它。
修改
我在输出中找到了以下内容。也许这就是原因。但为什么不抛出异常?
A first chance exception of type 'System.InvalidOperationException' occurred in EntityFramework.dll
修改
我认为这是我的错,当我从模型中删除属性时,我没有迁移。
答案 0 :(得分:0)
您是否尝试过使用Sql Profiler来查看是否正在对您的LocalDB实例执行任何SQL?
如果模型中存在不一致,则可以启用自动迁移。您还可以在模型上设置一个标志,指示是否允许数据丢失 - AutomaticMigrationDataLossAllowed:
Database.SetInitializer(new MigrateDatabaseToLatestVersion<DataContext, Configuration>());
答案 1 :(得分:0)
桌子的主键是什么?如果它是Id,那么它很可能是一个自动增量字段。不要将其设置为零,只需将其保留,看看它是否有效。
using (var db = new DataLayer.DataContext())
{
Group g = new Group {
Gid = "019282",
Name = "Admin"
};
db.Groups.Add(g);
db.SaveChanges();
}