9

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

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

我已阅读以下文章...

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

...这解释了应该发生的事情,但它对我不起作用,因为 Web Deploy 似乎无法检测到我正在使用实体框架。本教程显示了一个复选框以启用 Code First 迁移的执行...

Web 部署发布对话框

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

我已经读过,为了让 Visual Studio 检测实体框架上下文的使用,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>

任何建议将不胜感激。

谢谢,

蒂姆

4

2 回答 2

3

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

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

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

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

于 2012-09-22T15:00:25.243 回答
0

试试这个:启用迁移-强制

确保以下设置为 true AutomaticMigrationsEnabled = true;

重新发布 - 为我工作

于 2014-01-23T13:01:46.810 回答