0

我和我的一位同事正在开发一个使用 LINQ(以及随后的 DBML 文件)连接到数据库的应用程序。我们每个人都有自己的连接字符串,以便在自己的数据库上工作,如下所示:

public class DbConfig
{    
   public static string conStr = @"My connection string";
   public static string conStr = @"His connection string";
}

每次我们每个人都在他们的项目中工作时,我们只需注释掉另一个连接字符串。我的联系是我是否可以引用DBML 文件使用的文件中的两个conString属性中的任何一个。app.config谢谢你。

4

2 回答 2

2

您可以使用您的机器名称来执行此操作,使用如下代码:

public static class ConnectionString
{
    public static string Get
    {
        get
        {
            if(ConfigurationManager.ConnectionStrings.Count == 0)
                throw new Exception("No connection strings");

            var machineConnectionString = ConfigurationManager.ConnectionStrings["ConStringPrefix" + Environment.MachineName];
            var genericConnectionString = ConfigurationManager.ConnectionStrings["DefaultConString"];
            return  machineConnectionString ?? genericConnectionString;
        }
    }
}

然后在您的 app.config 中,您将拥有:

<connectionStrings>
    <add name="ConStringPrefix@MyPCName" connectionString="Data Source=.\sqlexpress;Initial Catalog=DatabaseName;Integrated Security=true" providerName="System.Data.SqlClient" />
    <add name="ConStringPrefix@MyFriendPcName" connectionString="Data Source=.\sqlexpress;Initial Catalog=DatabaseName;Integrated Security=true" providerName="System.Data.SqlClient" />
    <add name="nhibernate.conexao" connectionString="Data Source=.\sqlexpress;Initial Catalog=DatabaseName;Integrated Security=true" providerName="System.Data.SqlClient" />
</connectionStrings>
于 2015-12-08T17:41:37.890 回答
0

您可以创建个人构建配置(https://msdn.microsoft.com/en-us/library/kwybya3w.aspx)并在该配置中定义一些自定义标签,以便在代码中您可以拥有

#if MyBuild
    public static string conStr = @"My connection string";
#endif

#if HisBuild
   public static string conStr = @"His connection string";
#endif

定义您的自定义

打开项目的 Property Pages -> Build 然后在选择您的自定义配置后修改 Conditional Compilation Constants 属性。

这就是您如何定义自己的符号,然后根据您当前的构建设置拥有实际上包含/排除代码的#if #endif(例如在每个页面的顶部编写#define YourSymbol)

另一种解决方案可能只是添加对您的 appsettings 的外部引用,并且将该引用的文件不包含在您的源存储库中(这样您就不会共享它)这样任何程序员都可以拥有自己的文件配置

只需在您的 app.config/web.config 中添加一行

<appSettings configSource="YourCustomConfiguration.config"/>

然后不要将其添加到 teamfoundation 或您使用的任何 cvs

当然 YourCustomConfiguration.config 是一个文件,你可以把它放在任何你想要的地方,只需指定一个相对路径

好吧,我已经说过 appsettings 但您可以根据需要使用 configSource<connectionStrings configSource="YourCustomConnectionStrings.config">

于 2015-12-08T17:34:37.127 回答