这是一个奇怪的。当我在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())
 {}
}

10-04 16:17