实体框架,DbContext,SaveChanges()不工作

问题描述 投票:0回答:2

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

编辑:

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

c# .net entity-framework-5
2个回答
0
投票

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

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

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

Automatic migrations


0
投票

该表的主键是什么?如果它是Id,那么它很可能是一个自动增量字段。而不是将其设置为零,只需将其保留,看看它是否有效。

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

        db.Groups.Add(g);
        db.SaveChanges();
}
© www.soinside.com 2019 - 2024. All rights reserved.