Linq to sql 管理不同的开发者';将LINQ下的连接字符串转换为SQL

Linq to sql 管理不同的开发者';将LINQ下的连接字符串转换为SQL,linq-to-sql,development-environment,Linq To Sql,Development Environment,我的源代码在Subversion中,当两台不同的计算机具有不同的连接字符串时,我遇到了问题 LINQtoSQL设计器似乎只喜欢使用相同的连接字符串 由于开发人员具有不同的本地配置,设计器是否可以使用不同的连接字符串,但web应用程序中的实际使用情况来自web.config?不幸的是,这是LINQ to SQL设计器的一大难题。我不知道有什么方法可以强制VisualStudio在将表或存储过程拖到设计图面上时从不添加默认连接字符串 因此,我们致力于解决这一问题: 我们从不保存我们的开发密码 在更新

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

LINQtoSQL设计器似乎只喜欢使用相同的连接字符串


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

不幸的是,这是LINQ to SQL设计器的一大难题。我不知道有什么方法可以强制VisualStudio在将表或存储过程拖到设计图面上时从不添加默认连接字符串

因此,我们致力于解决这一问题:

  • 我们从不保存我们的开发密码
  • 在更新DataContext时,我们从不在代码中使用默认连接字符串
  • 因此,在涉及数据层的sprint过程中,我们可以“安全地”忽略多个连接字符串
  • 当事情停止/变得更加稳定时,我们从数据上下文中删除连接字符串,或者使用设计器曲面本身的属性,或者通过编辑XML。此时,数据上下文的修饰符就可以继续删除默认的连接字符串
    唉,这不是一个理想的情况。希望VS2010能够“修复”这个问题

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

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

  • 为LINQ到SQL数据上下文创建分部类。添加一个自定义构造函数,该构造函数不接受任何参数,并从上述配置类检索数据库连接字符串

  • 例如:

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

    现在,这应该可以解决开发人员以及部署到测试和生产环境时的问题。

    根据我的应用程序上的指导原则,现在根据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();
        }
    

    VS2010 Beta 2没有修复此问题。VS2013似乎也没有修复此问题。VS2019似乎也没有修复此问题=|我只是想为我的项目实现这个,但是我得到了一个错误“已经为…定义了一个方法”,因为现在它有两个默认构造函数的声明。我知道这是一个旧的注释,但不管怎样…从一个开放的、集中的。dbml的“属性”面板中,你需要展开“连接”,然后设置“应用程序设置”至
    False
    。这将从dbml的designer.cs中删除无参数构造函数,这意味着分部类中的构造函数将不再发出“已定义”错误。一个缺点是,如果在dbml中删除/添加一个表,它将重置连接字符串并将应用程序设置设回True。是的,这很烦人。