Entity framework 如何使Visual Studio发布Web向导确信我的数据库是Entity Framework CodeFirst?
在VS2015中,当我在发布向导中打开现有发布配置文件时,它会立即确定我的默认数据库不再是EF CodeFirst,并删除执行代码优先迁移的选项,并将其替换为更新数据库 不知何故,向导似乎决定这不再是CodeFirst项目,而是将其替换为DbDacFx,如下所示: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
<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上也遇到了同样的问题。