【发布时间】:2017-11-23 19:38:26
【问题描述】:
我有一个使用 EF 6.0 进行数据库操作的 Web API 项目。我有 3 个不同的 Azure SQL 数据库(Dev、Test、Prod)。
我已经能够使用数据优先方法创建实体数据模型。
我使用 VS2017 的配置管理器创建了一个 web.test 配置文件,但连接字符串的转换不起作用。
目前我的web.config 文件具有指向开发环境的连接字符串,如下所示:
<connectionStrings>
<add name="ProjectDbEntity"
connectionString="metadata=res://*/Data.ProjectEntityModel.csdl|res://*/Data.ProjectEntityModel.ssdl|res://*/Data.ProjectEntityModel.msl;provider=System.Data.SqlClient;provider connection string="data source=company-ai-Projectserver.database.windows.net;initial catalog=company.DB_Dev;persist security info=True;user id=Project;password=Password1234$$;MultipleActiveResultSets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
</connectionStrings>
并且,web.test.config 如下:
<connectionStrings>
<add name="ProjectDbEntity"
connectionString="metadata=res://*/Data.ProjectEntityModel.csdl|res://*/Data.ProjectEntityModel.ssdl|res://*/Data.ProjectEntityModel.msl;provider=System.Data.SqlClient;provider connection string="data source=company-ai-Projectserver.database.windows.net;initial catalog=company.DB_Test;persist security info=True;user id=Project;password=Project1234$$;MultipleActiveResultSets=True;App=EntityFramework""
providerName="System.Data.EntityClient"
xdt:Transform="SetAttributes"
xdt:Locator="Match(name)"/>
</connectionStrings>
当我使用它来使用一个数据库实例构建 EF 模型时,我无法弄清楚如何制作 EF 更改连接字符串,但在部署期间我想使用具有相同功能的其他数据库实例架构。
我一直在阅读以下post,但不知何故无法使其工作。
编辑:我找到了解决方案。我所要做的就是选择发布选项,然后选择设置,然后在弹出窗口中再次选择设置,最后从下拉选项中选择配置到所需的配置。除非明确选择,否则似乎在主菜单上选择配置不会发布相同的环境。
【问题讨论】:
-
您写道:“在部署期间,我想使用其他数据库”。我认为您应该考虑使用 CI/CD 管道。部署过程应该处理配置值。根据环境变量更改每个设置(例如连接字符串)。
标签: c# entity-framework asp.net-web-api entity-framework-6