这是一个奇怪的。当我在Visual Studio中创建LINQ to SQL项目时,突然之间,直到三周前,它都不会在设计器中创建以下行,而是用来创建该行的,现在我必须手动执行。然后,如果我在dbml文件中进行更改,它将其删除,而我必须手动重新添加。巨大的痛苦。这是我所说的话:
public DataContext():
base(global::System.Configuration.ConfigurationManager.ConnectionString["SiteSqlServer"].ConnectionString, mappingSource)
{
OnCreated();
}
我正在使用Visual Studio 2008 sp1。
最佳答案
这是一个已知的问题。
您必须为数据库上下文实现某种工厂。否则,您将始终与设计人员进行斗争,并且永远不知道您使用的是哪种连接。
public partial class CustomDataContext {
public static CustomDataContext Create()
{
return new CustomDataContext(ConfigurationManager.ConnectionStrings["CustomConnectionString"].ConnectionString);
}
}
另一个选项是从CustomDataContext继承,并创建一个默认的构造函数:
public CustomDataContext : InternalCustomDataContext /* created in designer */
{
protected string GetCustomConnectionString() {
return ConfigurationManager.ConnectionStrings["CustomConnectionString"].ConnectionString;
}
public CustomDataContext() : base(GetCustomConnectionString())
{}
}