2016-11-04 125 views
0

所以我一直在想如何通过自动化连接字符串名称来连接我的数据库,从而使我的生活更轻松。我在我的笔记本电脑和个人电脑上编程。他们利用不同的数据库所以我创建了下面的代码,它的工作。但是,我不记得以前听说过这种方法,所以想知道为什么?这是做这种事情的坏方法吗?可以理解的是,我必须在释放它之前删除代码,但它肯定会让它更容易在计算机之间切换,因为我不必在Web.config中注释/取消注释行。每个连接字符串名称都设置为Web.config中的计算机名称。连接字符串名称

static string connectionStringName = System.Environment.MachineName; 

    public ApplicationDbContext() 
     : base(connectionStringName, throwIfV1Schema: false) 
    { 
    } 

回答

3

一种不同的方法来考虑将利用web.config transforms并创建新的环境(开发-PC /开发,笔记本电脑),它包含有你需要不同的连接字符串。

然后,当您启动Visual Studio时,只需选择所需的构建配置文件,并在启动应用程序时使用适当的连接字符串。如果您需要使用两种环境之间不同的文件路径或其他配置,这将会很有帮助。

+0

谢谢,Dillie-O。说实话,我对于网络转换并没有一个清晰的认识,这就是为什么我在寻找更简单的东西。 – physics90

+0

我真的建议不要自己使用web.config变换 - 他们强迫你在每次部署到新的目标环境时重新构建你的包,当你将自动发布过程引入混合时,开始变得非常麻烦。 – s3raph86

+1

@ physics90 - 如果它有助于在所有的web.config的混乱变换,这里是一个老博客文章中,我如何得到它运行起来,这是一个容易得多比它听起来写道 - HTTPS://dillieodigital.wordpress .COM/2010/9月27日/驯服,你-configurationdeployments与 - 网络配置 - 变换/ s3raph86使得有关部署的顾虑好点,但我在我自己的CI环境中被发现捻/天青/ VS可以轻松地在编译部署时定位正确的配置。您可能需要重新审视,但如果您主要关注自己的开发工作,则转换应该没问题。 –

1

您的答案是使用web.config变换和您的SetParameters.xml文件的组合。我知道他们起初看起来很艰巨,但如果你把时间投入到学习中,它就会得到回报。

使用web.config转换或根据计算机名称命名连接字符串是坏主意TM。这些解决方案工作,但他们需要您每次释放到新环境时重新构建WebDeploy程序包。您需要一个解决方案,让您可以将任何软件包部署到任何环境。

首先,您需要创建两个web.config变换。一个用于调试,一个用于发布。 Web.Debug.config将如下所示:

<connectionStrings> 
    <add name="MyDB" connectionString="Data Source=.\SQLExpress;Initial Catalog=MyDevDatabase;Integrated Security=True" 
    xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/> 
</connectionStrings> 

而您的Web.Release.config将包含一个占位符字符串。当您将程序包部署到目标环境中的IIS时,这些占位符将被更新。它应该是这样的:

<connectionStrings> 
    <add name="MyDB" connectionString="__targetenvironmentconnstring__" 
    xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/> 
</connectionStrings> 

为了让您的目标环境连接字符串中的地方,当你做你的部署,你需要在属性在Web项目更新您发布配置。您将为每个目标环境创建一个发布配置文件(使用选项);所以QA.pubxml,UAT.pubxml,Production.pubxml等Visual Studio将引导您通过向导来创建这些文件,当您使用发布对话框。现在打开每个文件。你要编辑的文件的末尾纳入MSDeployParameterValue元素,如我在这里所做的

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> <!-- A bunch of info --> </PropertyGroup> 
    <ItemGroup> 
    <MSDeployParameterValue Include="$(DeployParameterPrefix)MyDB-Web.config Connection String"> 
    <ParameterValue><!-- Your target environment connection string goes here! --></ParameterValue> 
    </MSDeployParameterValue> 
</Project> 

现在,右键单击并发布你的Web项目,选择发布配置你想要的。在您指定的输出目录中,您将看到一个包含您的目标连接字符串的SetParameters.xml文件。这将会进入你的网络。配置文件在部署,但重要的是,你也可以只手动导入包使用IIS,并在部署时这样分配自己的价值观:

enter image description here

最后你可以参考你的连接字符串使用ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString无论您处于什么环境,您都拥有正确的价值!

要了解更多,我强烈建议您阅读以下

这需要几个去绕到你的头,但你永远不会回去。

相关问题