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 如何使Visual Studio发布Web向导确信我的数据库是Entity Framework CodeFirst?_Entity Framework_Ef Code First_Visual Studio 2015_Web Deployment_Azure Web App Service - Fatal编程技术网

Entity framework 如何使Visual Studio发布Web向导确信我的数据库是Entity Framework CodeFirst?

Entity framework 如何使Visual Studio发布Web向导确信我的数据库是Entity Framework CodeFirst?,entity-framework,ef-code-first,visual-studio-2015,web-deployment,azure-web-app-service,Entity Framework,Ef Code First,Visual Studio 2015,Web Deployment,Azure Web App Service,在VS2015中,当我在发布向导中打开现有发布配置文件时,它会立即确定我的默认数据库不再是EF CodeFirst,并删除执行代码优先迁移的选项,并将其替换为更新数据库 不知何故,向导似乎决定这不再是CodeFirst项目,而是将其替换为DbDacFx,如下所示: <PublishDatabaseSettings> <Objects xmlns=""> <ObjectGroup Name="DefaultConnection" Order="1" Ena

在VS2015中,当我在发布向导中打开现有发布配置文件时,它会立即确定我的默认数据库不再是EF CodeFirst,并删除执行代码优先迁移的选项,并将其替换为更新数据库

不知何故,向导似乎决定这不再是CodeFirst项目,而是将其替换为DbDacFx,如下所示:

<PublishDatabaseSettings>
  <Objects xmlns="">
    <ObjectGroup Name="DefaultConnection" Order="1" Enabled="True">
      <Destination Path="Data Source=*" />
      <Object Type="DbCodeFirst">
        <Source Path="DBMigration" DbContext="m4d.Context.DanceMusicContext, m4d" MigrationConfiguration="m4d.Migrations.Configuration, m4d" Origin="Configuration" />
      </Object>
    </ObjectGroup>
  </Objects>
</PublishDatabaseSettings>

转换为:

<PublishDatabaseSettings>
  <Objects xmlns="">
    <ObjectGroup Name="DefaultConnection" Order="1" Enabled="False">
      <Destination Path="Data Source=*" />
      <Object Type="DbDacFx">
        <PreSource Path="Data Source=*" includeData="False" />
        <Source Path="$(IntermediateOutputPath)AutoScripts\DefaultConnection_IncrementalSchemaOnly.dacpac" dacpacAction="Deploy" />
      </Object>
      <UpdateFrom Type="Web.Config">
        <Source MatchValue="Data Source=*" MatchAttributes="$(UpdateFromConnectionStringAttributes)" />
      </UpdateFrom>
    </ObjectGroup>
  </Objects>
</PublishDatabaseSettings>

(我将各种连接字符串替换为*)

有人知道向导使用什么来确定这是CodeFirst项目吗


本文详细介绍了如何推出自己版本的Execute Code First Migrations(执行代码优先迁移)选项,这是一种可能的解决方法,但它过去一直有效。

在.pubxml文件中,必须将ObjectGroup重命名为Dbcontext的全名:m4d.Migrations.Configuration。否则,它似乎被忽视了

<PublishDatabaseSettings>
  <Objects xmlns="">
    <ObjectGroup Name="m4d.Migrations.Configuration" Order="1" Enabled="True">
      <Destination Path="Data Source=*" />
      <Object Type="DbCodeFirst">
        <Source Path="DBMigration" DbContext="m4d.Context.DanceMusicContext, m4d" MigrationConfiguration="m4d.Migrations.Configuration, m4d" Origin="Configuration" />
      </Object>
    </ObjectGroup>
  </Objects>
</PublishDatabaseSettings>


我无法准确回答您的问题,但我注意到,如果我重新启动Visual Studio,问题不会重现。我已经重新启动了VS2015几次,但仍然遇到您在这里提到的问题。我在Visual Studio 2017上也遇到了同样的问题。