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

Vee*_*ech 28 linq linq-to-sql

可我只是点了连接字符串中Dbml.designer.cs在ConnectionString中app.conf?我写下了它成功指向的代码app.config.

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

但是每当我修改或向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();
    }
Run Code Online (Sandbox Code Playgroud)

我扩展了"连接"选项.将"应用程序设置"设置为False

Yas*_*ser 50

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

步骤1:将.dbml文件的连接属性设置为"none".

在此输入图像描述

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

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

第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>
Run Code Online (Sandbox Code Playgroud)

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

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

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


Ale*_*lex 40

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

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