Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 实体框架代码优先数据迁移不适用于VS2012 Web Deploy_Entity Framework_Code First_Webdeploy_Entity Framework Migrations - Fatal编程技术网

Entity framework 实体框架代码优先数据迁移不适用于VS2012 Web Deploy

Entity framework 实体框架代码优先数据迁移不适用于VS2012 Web Deploy,entity-framework,code-first,webdeploy,entity-framework-migrations,Entity Framework,Code First,Webdeploy,Entity Framework Migrations,我使用Visual Studio 2012、.NET 4.5和Entity Framework 5.0创建了一个MVC 3.0应用程序 使用代码优先的数据迁移,我能够正确地将模型更改传播到本地测试数据库,但在使用Web Deploy部署到我的暂存和生产服务器时,我不知道如何使其工作 我读了下面的文章 。。。这解释了应该发生什么,但对我来说不起作用,因为WebDeploy似乎无法检测到我正在使用实体框架。本教程显示了一个复选框,用于启用代码优先迁移的执行 。。。但是我的对话框只显示每个数据库的

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

使用代码优先的数据迁移,我能够正确地将模型更改传播到本地测试数据库,但在使用Web Deploy部署到我的暂存和生产服务器时,我不知道如何使其工作

我读了下面的文章

。。。这解释了应该发生什么,但对我来说不起作用,因为WebDeploy似乎无法检测到我正在使用实体框架。本教程显示了一个复选框,用于启用代码优先迁移的执行

。。。但是我的对话框只显示每个数据库的
updatedatabase
复选框

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

如有任何建议,将不胜感激

谢谢


蒂姆

我通过实验找到了这个问题的解决办法

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

但是,我发现问题在于这些配置文件的转换,除非我手动编辑它们的XML文件,否则显然无法让旧的导入配置文件参与代码优先迁移

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

尝试以下操作: 启用迁移-强制

确保以下设置为true AutomaticMiggerationsEnabled=真


重新发布-为我工作

能给我们简要介绍一下这些差异吗?@Richard:在新创建的配置文件中包含许多附加元素,每个元素代表一个上下文类。我假设在第一次执行Web Deploy时会运行某种发现过程,而不是作为VS2012解决方案转换的一部分执行。