EF代码首次从Nuget参考

时间:2015-08-04 18:12:28

标签: c# entity-framework asp.net-mvc-4

我能找到的最近的东西就是这个问题: EF code migration in reference dll coming through nuget

与该帖子类似,我们有一个使用EF 6编写一些交叉引用记录的包。我最近修改了修改EF使用的表的模式的包。添加了迁移等,并重新部署了Package。到目前为止一切都很好。

我在两个不同的解决方案中引用了这个Nuget包。在一个解决方案中,该软件包尚不存在,因此我将其添加,构建,部署(均使用Team City)到Azure。对于该解决方案,没有预先存在的迁移,因此没有__MigrationHistory表。一旦代码到达外部参照服务,它就会愉快地创建表和__MigrationHistory。表和历史都有正确的列和完整的迁移历史...到目前为止,非常好。

在第二个解决方案中,包已经存在,所以我只是更新它。我期望发生的是当这段代码调用外部参照服务时,它也会运行迁移,更新列名,并插入__MigrationHistory记录。但是,唉,我在日志中得到的是“自创建数据库以来,支持'DatabaseDef'上下文的模型已经改变了......”

在任何一个解决方案中都没有使用任何SetInitializer(代码或配置)。两种解决方案都在相同的地方引用了EF。唯一的区别是,对于“一个有效的”,我实际上在它访问外部参照服务代码时运行调试器。我没有尝试过通过调试器运行的其他解决方案,并且无法想到为什么这很重要,但是发生了奇怪的事情。我还要求我们的Ops团队在某些情况下查看Team City部署是否在部署期间启用代码优先迁移。

问题:

  1. 为什么一个人会工作而不是另一个人的任何想法?
  2. 在“Xref Nuget Package”中,我将在哪里放置初始化程序(如果有的话)?那里没有App_Start或global.asax ......只是一个程序集正在编写外部参照记录。
  3. 我还有什么别的吗?

1 个答案:

答案 0 :(得分:0)

错误表明您的datacontext架构和数据库架构存在一些冲突。如果您确定两者都相同,请运行add-migration,从“UP()”方法中删除所有代码。运行“update-database”。

参考此主题:repo