在LINQ to SQL下管理不同开发人员的连接字符串

时间:2009-11-24 22:43:09

标签: linq-to-sql development-environment

使用Subversion中的源代码,当两台不同的计算机具有不同的连接字符串时,我遇到了问题。

LINQ to SQL设计者似乎只喜欢拥有相同的连接字符串。

设计人员是否可以使用因开发人员具有不同本地配置而变化的连接字符串,但Web应用程序中的实际使用情况来自web.config?

3 个答案:

答案 0 :(得分:4)

不幸的是,这是LINQ to SQL设计师的一个巨大痛苦来源。在将表或存储过程拖到设计图面上时,我不知道强制visual studio永远不会添加默认连接字符串的方法。

我们正在解决这个问题:

  1. 我们永远不会保存我们的开发密码
  2. 在新建DataContext时,我们从未在代码中使用默认连接字符串
  3. 因此,我们可以“安全地”忽略触及数据层的短跑期间的多个连接字符串
  4. 当事物消失/变得更稳定时,我们从数据上下文中删除连接字符串,使用设计器表面本身的属性或编辑XML。此时,由数据上下文的修饰符决定是否继续删除默认连接字符串。
  5. 唉,这不是一个理想的情况。希望VS2010能够“修复”这个问题。

答案 1 :(得分:1)

我遇到了这个问题并找到了你的问题。这是我们现在使用的解决方案:

  1. 使用集中式Configuration类从文件系统上的特定位置检索配置值。这允许运行代码的每台机器使用自己的配置值。

  2. 为LINQ to SQL数据上下文创建一个分部类。添加不带参数的自定义构造函数,并从上述Configuration类中检索数据库连接字符串。

  3. 例如:

    public partial class MyCustomDBDataContext
    {
        public MyCustomDBDataContext() :
                    base(Configuration.GetDatabaseConnectionString())
        {
        }
    }
    

    现在应该解决开发人员和部署到测试和生产时的问题。

答案 2 :(得分:1)

通过遵循How Do I? Change Connection String of datacontext default constructor from web.config上的指南,我的应用程序现在使用不同的连接字符串,具体取决于HttpContext.Current.Request是否为本地。

//using System.Web.Configuration;

partial void OnCreated()
    {
        //Change this condition to your needs
        var isLocal = HttpContext.Current.Request.IsLocal;
        this.Connection.ConnectionString = WebConfigurationManager.ConnectionStrings[isLocal ? "localConnectionstring" : "otherConnectionstring"].ToString();
    }