C# 如何在本地和云执行中使用不同的数据库

C# 如何在本地和云执行中使用不同的数据库,c#,asp.net,database,azure,configuration,C#,Asp.net,Database,Azure,Configuration,我在Azure上部署了一个ASP.NET MVC4解决方案。此解决方案连接到SQL数据库 我想知道该解决方案是否可以配置为,当我在本地机器上运行时(即开发/调试时),它使用本地数据库,当它在云中运行时(即在Azure上),它使用云数据库 我知道存储帐户(blob、queue)连接字符串可以进行这种配置,但到目前为止,我还没有找到任何与数据库连接字符串等效的配置 感谢所有愿意帮助我的人。如果您使用的是PaaS云服务,您可以指定单独的cscfg文件(本地、开发、产品)。当您通过模拟器在本地运行时,您

我在Azure上部署了一个ASP.NET MVC4解决方案。此解决方案连接到SQL数据库

我想知道该解决方案是否可以配置为,当我在本地机器上运行时(即开发/调试时),它使用本地数据库,当它在云中运行时(即在Azure上),它使用云数据库

我知道存储帐户(blob、queue)连接字符串可以进行这种配置,但到目前为止,我还没有找到任何与数据库连接字符串等效的配置


感谢所有愿意帮助我的人。

如果您使用的是PaaS云服务,您可以指定单独的cscfg文件(本地、开发、产品)。当您通过模拟器在本地运行时,您将使用“本地”版本。然后,当您部署到云时,您可以使用不同的版本


如果我们谈论的是Web站点或IaaS,我所见过的最常用的方法就是找到一种方法来检测您正在运行的环境(本地或托管)。通常基于机器名(不太常见)或请求URI(相当常见)。然后,在代码中为正在运行的环境使用适当的连接字符串配置设置

只需配置web.config文件即可设置正确的连接字符串。对于本地数据库,您只需要以下内容:

    <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=mydb;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\mydbmdf" providerName="System.Data.SqlClient" />

然后添加一个web.Release.config文件,在其中使用转换语句更改连接字符串,如下所示

 <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=xxx.database.windows.net,1433;Initial Catalog=xxx;User Id=xxx@xxx;Password=xxx;" providerName="System.Data.SqlClient" xdt:Transform="Replace"/>
 </connectionStrings>


您已经完成了。

谢谢您的帮助。*。cscfg文件是我们用来提供与存储帐户相关的不同设置的文件,但我找不到使用它们来解决问题的方法@Whirly的解决方案(web.Release.config/web.Debug.config中的transform属性)工作起来很有魅力