今天我正在对我的数据库模型进行更改。我正在修改它2个小时,没有编译它。
所以,我在我的应用程序中有这个:
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MyDb>());
通常当我对我的模型进行更改时,这就足够了:
var tmp = new MyDb();
tmp.Categories.Any();
模特正在重建自己。但现在,在我改变模型后,我收到了一个错误:
对象引用未设置为对象的实例。
我完全不知道这是什么意思,因为我正在调用MyDb(),所以这个实例已经设置好了。这里发生了什么?我怎样才能检查出了什么问题?
编辑:我刚刚发现的事情是它甚至没有尝试重新创建数据库。我已经设定了这个:
public class MyDatabaseInitializer : DropCreateDatabaseIfModelChanges<ScykDb>
{
protected override void Seed(ScykDb context)
{
base.Seed(context);
(code...)
}
}
进入我的application_start:
Database.SetInitializer(new MyDatabaseInitializer());
我在这个方法中设置了一个断点,它甚至没有击中它!
答案 0 :(得分:4)
我刚刚碰到这个,而我之前没有。它让我疯狂,直到我弄明白我在做什么。如果您的模型具有List到另一个模型,请确保模型上的构造函数初始化列表。
答案 1 :(得分:1)
好。对于任何进入这里的人来说,这是解决方案:
我不知道它是如何工作的,但我注释掉了所有的[ForeignKey]属性以及我所有流畅的api配置。然后我启动了项目,并使用只有流畅的api修复了它所抛出的错误。这有帮助。现在一切正常。