在启动项目中发布没有上下文的实体框架代码优先迁移

时间:2013-05-14 12:31:48

标签: entity-framework azure asp.net-web-api

我正在使用以下项目构建解决方案:

  • Main.Data - 班级图书馆项目
  • Main.API - Asp.NET MVC WebApi - 引用Main.Data
  • Main - Asp.NET MVC 4 Web应用程序 - 引用Main.API

我在MyContext : DbContext项目中有一个Main.Data类。 我还成功地在enable-migrations项目上发出了Main.Data控制台命令,并且我成功地将LocalDB用作我的数据和upgrade-database迁移的SQL服务器。

当我尝试将Main项目发布到Windows Azure网站时,问题就开始了。

使用Import from a Windows Azure web site自动创建的发布配置文件似乎无法识别我正在使用Entity Framework Code First解决方案,因此我无法按照我的意愿启用Execute Code First Migrations
相反,我只能启用Update database脚本。

我正在使用Visual Studio 2012和Entity Framework 5.0.0(自项目开始以来)。

为了验证,我尝试在MyContext项目中添加一个临时Main类,并在enable-migrations项目中添加Main,之后我的发布配置文件自动检测实体框架代码优先。
那当然不是解决方案(或者是?)

以下是一些相关主题:

  • This是基础学习教程。
  • This说明了部署选项,但没有进行故障排除。
  • This实际上提供了一些尝试,但似乎都不自然。

我正在寻找一个干净稳定的解决方案。我是否必须将我的Context类放在主项目中?

提前致谢

1 个答案:

答案 0 :(得分:10)

我现在可以在创建发布配置文件时启用Execute Code First Migrations 以下是我为实现这一目标所做的工作:

  1. Main/Web.config内部,我将连接字符串的名称更改为上下文类的FQN:Main.Data.MyContext
  2. Main项目的引用添加到Main.Data项目(直到现在才需要)。
  3. 这对我有用。
    如果有人得到更好或更有教育意义的答案,我会很高兴听到。