在Subversion中使用我的源代码时,我遇到了两台不同计算机有不同连接字符串的问题。在LINQ to SQL下管理不同开发人员的连接字符串
LINQ to SQL设计器似乎只喜欢具有相同的连接字符串。
设计师可以使用连接字符串,因为开发人员具有不同的本地配置,但实际使用的Web应用程序从web.config中获取?
在Subversion中使用我的源代码时,我遇到了两台不同计算机有不同连接字符串的问题。在LINQ to SQL下管理不同开发人员的连接字符串
LINQ to SQL设计器似乎只喜欢具有相同的连接字符串。
设计师可以使用连接字符串,因为开发人员具有不同的本地配置,但实际使用的Web应用程序从web.config中获取?
不幸的是,这是LINQ to SQL设计人员痛苦的巨大来源。我不知道如何强制Visual Studio在您将表格或存储过程拖放到设计界面时从不添加默认连接字符串。
我们解决正是如此问题:
唉,这不是一个理想的情况。希望VS2010能够“解决”这个问题。
我遇到了这个问题,发现你的问题。以下是我们现在使用的解决方案:
使用集中式配置类从文件系统上的特定位置检索配置值。这允许运行代码的每台机器使用自己的配置值。
为LINQ to SQL数据上下文创建一个部分类。添加一个不带参数的自定义构造函数,并从上述的Configuration类中检索数据库连接字符串。
例如:
public partial class MyCustomDBDataContext
{
public MyCustomDBDataContext() :
base(Configuration.GetDatabaseConnectionString())
{
}
}
这个现在应该解决的问题无论对于开发者和在部署到测试和生产。
只是试图为我的项目实现这一点,但即时通讯错误“已经为...定义一个方法”,因为它现在有2个默认构造函数的声明。 – dkarzon 2010-03-24 23:22:04
我知道这是一个旧的评论,但无论...从一个* open *和* focused * .dbml的“Properties”面板,您需要展开“Connection”,然后将“Application Settings”设置为'False'。这将从dbml的designer.cs中删除无参数的构造函数,这意味着您的部分类中的构造函数将不再发出“已定义”错误。一个缺点是,如果您删除/添加一个表到dbml,它将重置连接字符串并将应用程序设置重新设置为True。是的,这很烦人。 – 2011-04-21 00:35:32
通过以下对How Do I? Change Connection String of datacontext default constructor from web.config我的应用程序的指导方针现在使用不同的ConnectionStrings取决于如果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没有解决这个问题。 – MikeD 2010-01-24 04:18:59
看来VS2013还没有得到这个固定。 – 2014-04-25 02:41:12