使用Subversion中的源代码,当两台不同的计算机具有不同的连接字符串时,我遇到了问题。
LINQ to SQL设计者似乎只喜欢拥有相同的连接字符串。
设计人员是否可以使用因开发人员具有不同本地配置而变化的连接字符串,但Web应用程序中的实际使用情况来自web.config?
答案 0 :(得分:4)
不幸的是,这是LINQ to SQL设计师的一个巨大痛苦来源。在将表或存储过程拖到设计图面上时,我不知道强制visual studio永远不会添加默认连接字符串的方法。
我们正在解决这个问题:
答案 1 :(得分:1)
我遇到了这个问题并找到了你的问题。这是我们现在使用的解决方案:
使用集中式Configuration类从文件系统上的特定位置检索配置值。这允许运行代码的每台机器使用自己的配置值。
为LINQ to SQL数据上下文创建一个分部类。添加不带参数的自定义构造函数,并从上述Configuration类中检索数据库连接字符串。
例如:
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();
}