向表中添加列后,DbContext中出错(ASP.NET/EF Core)

时间:2016-12-31 01:10:25

标签: model asp.net-core entity-framework-core

一切正常,直到我在表格中添加了一个新列。我找不到如何更新模型类,所以我在模型中自己添加了列。但现在,当我运行我的应用程序时,我收到错误:“对象引用未设置为对象的实例。”

在调试期间,我发现创建dbcontext实例的问题是:

MyDbContext context = new MyDbContext(db);

上下文对象是不从表中获取行并且正在提供此Object引用错误。

如果我从Model类中删除新列,那么它可以正常工作。这表明我的数据库和模型不同步,似乎应用程序正在使用旧的表设计。

我也尝试使用CLI命令来更新数据库,但也遇到了困难。

有人建议在添加表格列后如何使模型类和表格设计同步?我正在使用ASP.NET Core和EF Core。

谢谢。

2 个答案:

答案 0 :(得分:0)

我能够解决这个问题。我添加到类文件中的属性是int,表中的列也是int。但我没有在类文件中提到通过执行int它是一个可以为空的属性? 。表中的值都是Null,因为属性不是可以为空的属性,所以它引起了问题。

因此,我们可以继续在表中添加新列,在类文件中添加匹配属性。这不是问题。只需要确保数据类型(可以为空)匹配。

答案 1 :(得分:0)

把try catch找到确切的问题。

出现此问题的原因是数据库架构与代码级别更改的架构之间存在差异。你需要添加这一行。

Database.SetInitializer<yourDbName>(new DropCreateDatabaseIfModelChanges<yourDbName>());

它将同步您的数据库。