实体框架、DbContext、SaveChanges() 不起作用
本文关键字:不起作用 DbContext 框架 实体 SaveChanges | 更新日期: 2023-09-27 18:30:16
我在EF,DbContext和SaveChanges()方法上遇到了一个奇怪的问题。我正在使用EF 5,.NET 4.5和LocalDB。我正在使用代码优先 EF,并让它自动为我创建数据库。
问题出在数据库之后的任何事情。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");
}
消息框甚至不显示。知道发生了什么吗?它不会抛出任何错误,所以我什至无法调试它。
编辑:
我在输出中找到了以下内容。也许这就是原因。但是为什么不抛出异常呢?
A first chance exception of type 'System.InvalidOperationException' occurred in EntityFramework.dll
编辑:
我认为这是我的错,当我从模型中删除属性时,我没有迁移。
您是否尝试过使用 Sql Profiler 查看是否正在针对您的 LocalDB 实例执行任何 SQL?
如果模型中不一致,则可以启用自动迁移。您还可以针对模型设置一个标志,指示是否允许数据丢失 - 自动迁移数据丢失允许:
Database.SetInitializer(new MigrateDatabaseToLatestVersion<DataContext, Configuration>());
自动迁移
表的主键是什么?如果是 Id,则很可能是一个自动递增字段。不要将其设置为零,只需将其排除在外,看看它是否有效。
using (var db = new DataLayer.DataContext())
{
Group g = new Group {
Gid = "019282",
Name = "Admin"
};
db.Groups.Add(g);
db.SaveChanges();
}