将dbml中的连接字符串指向app.config

时间:2011-02-28 06:57:57

标签: linq linq-to-sql

我可以将Dbml.designer.cs中的连接字符串指向app.conf中的连接字符串吗?我编写了下面的代码,它成功地指向了app.config

public leDataContext() : 
    base(ConfigurationManager.ConnectionStrings["leConnString"].ToString(), mappingSource)
    {
        OnCreated();
    }

但是每当我修改或添加一个表到dbml时,它都会开始自动将该代码替换为这个

 public leDataContext() : 
            base("Data Source=.\\SQLEXPRESS;AttachDbFilename=\"D:\\My Projects\\App_Data\\le.mdf\";Integrated Security=True;Connect Timeout=30;User Instance=True", mappingSource)
    {
        OnCreated();
    }

我扩展了“连接”选项。将“应用程序设置”设置为False

2 个答案:

答案 0 :(得分:46)

这更像是@Alex答案的延伸。

第1步:将.dbml文件的连接属性设置为“none”。

enter image description here

步骤2:创建一个新的单独的部分类,其名称与.dbml文件的现有部分类的名称相同。并使用无参数构造函数设置connectionString属性。

public partial class DataClassesDataContext
{
  public DataClassesDataContext() : base(ConfigurationManager.ConnectionStrings["Dev-connString"].ConnectionString)
  {
    OnCreated();
  }
}

第3步:差不多完成了!最后,您需要在app.config文件中定义connectionString,如下所示。

  

<connectionStrings>

  <add
  name="Dev-connString"
  connectionString="Data Source=yasser-home;Initial Catalog=pp;Persist Security Info=True;User ID=sa;Password=gogole"
  providerName="System.Data.SqlClient" />

</connectionStrings>

您现在可以轻松地从app.config文件更改connectionString,而无需重新编译代码,否则就是这种情况。

为什么我要创建一个单独的部分类?我无法编辑现有的Dbml.designer.cs文件吗?

不要手动修改Dbml.designer.cs文件,因为在添加/编辑/删除表,存储过程等时会重写它。

答案 1 :(得分:39)

不要手动修改Dbml.designer.cs文件,因为在您编辑/添加表格等时,它会被重写。而不是将Connection设计器文件的.dbml属性设置为None,并使用无参数构造函数添加部分类:

public partial class leDataContext
{ 
   public leDataContext() : 
       base(ConfigurationManager.ConnectionStrings["leConnString"].ToString())
    {
        OnCreated();
    }    
}