0

我对 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

编辑:

我认为这是我的错,当我从模型中删除一个属性时我没有迁移。

4

2 回答 2

0

表的主键是什么?如果它是 Id,那么它很可能是一个自动增量字段。与其将其设置为零,不如将其排除在外,看看它是否有效。

using (var db = new DataLayer.DataContext())
{
    Group g = new Group {
            Gid = "019282",
            Name = "Admin"
        };

        db.Groups.Add(g);
        db.SaveChanges();
}
于 2013-09-05T22:36:49.543 回答
0

您是否尝试过使用 Sql Profiler 查看是否正在针对您的 LocalDB 实例执行任何 SQL?

如果您的模型不一致,您可以启用自动迁移。您还可以针对模型设置一个标志,指示是否允许数据丢失 - AutomaticMigrationDataLossAllowed:

Database.SetInitializer(new MigrateDatabaseToLatestVersion<DataContext, Configuration>());

自动迁移

于 2013-09-05T21:55:55.747 回答