【问题标题】:Same DbContext behaving differently under different projects in a solution相同的 DbContext 在解决方案中的不同项目下表现不同
【发布时间】:2016-02-25 06:49:14
【问题描述】:

我有标准的 asp.net mvc 应用程序,并首先使用实体​​框架代码,并将存储库作为后端。没有挂起的迁移,当我执行应用程序时一切正常。

我添加了一个云服务项目(具有一个工作角色)并使用了与我的 asp.net mvc 应用程序一起使用的相同 dbcontext,但是当我在 azure 模拟器上运行云服务时,它会抛出异常,指出 db 模型是改变了,我需要添加迁移和更新数据库。

支持“xDbContext”上下文的模型在创建数据库后发生了变化。考虑使用 Code First 迁移来更新数据库

案例 1:当我添加迁移时,它给了我一些我已经执行的更改,并且可以在数据库中看到它们。

案例 2:当我从我的 Web 应用程序添加迁移时,它会创建一个空迁移。

为什么相同的 dbcontext 在一个解决方案中的不同项目下表现不同?我觉得这很奇怪还是我错过了什么?

如果您能指导我到某个地方,我将不胜感激。 谢谢

【问题讨论】:

  • 两种情况都针对同一个数据库实例运行?
  • 是的。我有一个类库,其中包含我的实体、数据库配置和 dbContext 类,它被添加为两个项目的引用。
  • 使用该库的两个项目是否引入了相同版本的实体框架?也许这是一个愚蠢的问题,但我认为这只能是一些愚蠢的错误。在一种情况下,EF 要求的更改并非微不足道,对吧?我们说的是 ALTER TABLE 语句,是吗?
  • 您是否 100% 确定两者都指向同一个数据库?您的连接字符串在两个项目中是什么样的?
  • @AliBaig 谢谢,我发现EF的版本不一样,升级到6.1.3后就可以了。

标签: c# asp.net-mvc entity-framework azure-worker-roles entity-framework-migrations


【解决方案1】:

不确定,但请记住,使用哪个数据库取决于正在运行的程序集的配置文件。因此,作为云运行将使用云配置,而运行 Web 项目将使用 Web 配置。甚至运行单元测试也会使用单元测试项目中的配置文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多