Entity framework 在启动项目中没有上下文的情况下发布实体框架代码首次迁移
我正在通过以下项目构建解决方案:Entity framework 在启动项目中没有上下文的情况下发布实体框架代码首次迁移,entity-framework,azure,asp.net-web-api,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 我在Main.Data项目中有一个MyContext:DbContext类。 我还成功地在Main.Data项目上发出了enable migrationsconsole命令,并且成功地将LocalDB用作我的数据和升级数据库的SQL server迁移 当我试图将Main项目发
-类库项目Main.Data
-Asp.NET MVC WebApi-引用Main.DataMain.API
-Asp.NET MVC 4 web应用程序-参考Main.APIMain
Main.Data
项目中有一个MyContext:DbContext
类。
我还成功地在Main.Data
项目上发出了enable migrations
console命令,并且成功地将LocalDB用作我的数据和升级数据库的SQL server迁移
当我试图将Main
项目发布到Windows Azure网站时,问题就出现了
使用从Microsoft Azure网站导入的自动创建的发布配置文件似乎没有识别出我使用的是实体框架代码优先解决方案,因此我无法按我的意愿启用执行代码优先迁移
相反,我只能启用更新数据库
脚本
我正在使用Visual Studio 2012和Entity Framework 5.0.0(自项目开始以来)
为了验证,我尝试在Main
项目中添加一个临时的MyContext
类,并在Main
项目中启用迁移,然后我的发布配置文件首先自动检测到实体框架代码。
当然,这不是一个解决方案(或者是吗?)
以下是一些相关的线程:
- 是基础学习教程
- 解释部署选项,但不进行故障排除
- 实际上给出了一些尝试的想法,但似乎都不自然
我正在寻找一种干净稳定的解决方案。我是否必须将上下文类放在主项目中
提前感谢我现在可以在创建发布配置文件时启用执行代码优先迁移
。
以下是我为实现这一目标所做的:
在Main/Web.config
中,我将连接字符串的名称更改为上下文类的FQN:Main.Data.MyContext
将引用从Main
project添加到Main.Data
project(直到现在才需要)
这就是我的工作。
如果有人得到更好或更具教育意义的答案,我会很高兴听到。你记得将app/web.config添加到你的主项目中吗?启用迁移时,会将配置文件添加到Main.Data项目中。在引用项目时不会添加这些。我的上下文在不同的项目中,但是配置文件应该在我使用它们的项目中?是的,web.config位于主项目中,配置文件位于Main.Data中。。。您是否成功将主项目部署到Azure?我的设置不是100%相同。我在VisualStudio和local中完成所有迁移工作。部署时,我的数据库是最新的,一切正常。尚未尝试使用automatic MigrationMain.Data.MyContext,这与“完整路径”(类似于文件系统路径)不同。为了使用我现有的发布配置文件(.pubxml),我必须进入它们并手动更新
。也许重新创造它们也会奏效。谢谢这对我不起作用:(@Liel)你做了什么别的事情使它起作用了吗?