EF Code First - “对象引用未设置为对象的实例”。在数据库创建期间

时间:2013-02-11 18:26:51

标签: asp.net-mvc database linq entity-framework ef-code-first

今天我正在对我的数据库模型进行更改。我正在修改它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());

我在这个方法中设置了一个断点,它甚至没有击中它!

2 个答案:

答案 0 :(得分:4)

我刚刚碰到这个,而我之前没有。它让我疯狂,直到我弄明白我在做什么。如果您的模型具有List到另一个模型,请确保模型上的构造函数初始化列表。

答案 1 :(得分:1)

好。对于任何进入这里的人来说,这是解决方案:

我不知道它是如何工作的,但我注释掉了所有的[ForeignKey]属性以及我所有流畅的api配置。然后我启动了项目,并使用只有流畅的api修复了它所抛出的错误。这有帮助。现在一切正常。