实体框架代码第一次数据迁移不与VS2012 Web部署一起使用

Tim*_*ter 9 entity-framework code-first webdeploy ef-migrations

我使用Visual Studio 2012,.NET 4.5和Entity Framework 5.0创建了一个MVC 3.0应用程序.

使用Code First Data Migrations,我能够正确地将模型更改传播到我的本地测试数据库,但是在使用Web Deploy部署到我的登台和生产服务器时,我无法弄清楚如何使其工作.

我看过以下文章......

http://msdn.microsoft.com/en-us/library/dd394698(v=vs.110)#dbdacfx

...它解释了应该发生什么,但它不适合我,因为Web Deploy似乎无法检测到我正在使用实体框架.本教程显示了一个复选框,用于启用Code First Migrations ...

Web部署发布对话框

...但我的对话框显示Update Database每个数据库的唯一复选框.

我已经读过,为了让Visual Studio检测到Entity Framework上下文的使用,Web.config必须包含一个定义它的元素.这是我的:

<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />

    <contexts>
        <context type="MyContext, MyAssembly">
            <databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[MyContext, MyAssembly], [MyConfig, MyAssembly]], EntityFramework">
                <parameters>
                    <parameter value="MyConnectionStringName"/>
                </parameters>
            </databaseInitializer>
        </context>
    </contexts>
</entityFramework>
Run Code Online (Sandbox Code Playgroud)

任何建议将不胜感激.

谢谢,

蒂姆

Tim*_*ter 3

我通过实验发现了这个问题的解决方案。

事实上,我的 MVC 应用程序是由 VS2012 通过从 VS2010 解决方案转换而来创建的。由于转换过程没有报告任何问题,我认为它已正确转换所有内容,包括发布配置文件。

然而,我发现问题出在这些配置文件的转换上,除非我手动编辑它们的 XML 文件,否则显然没有办法让旧的导入配置文件参与 Code First 迁移。

只需在转换后的解决方案中创建新的发布配置文件即可实现预期的行为。