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

发布于 2024-10-19 09:35:10 字数 651 浏览 1 评论 0原文

我可以将 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

Can I just point the connection string in Dbml.designer.cs to the connectionstring in the app.conf? I wrote the code below which it successfully point to the app.config.

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

However whenever i modify or add a table into the dbml, it will start to auto replace that code into this

 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();
    }

I have expanded the "Connection" option. Set "Application Settings" to False

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

岛徒 2024-10-26 09:35:10

这更像是@Alex 答案的扩展。

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

在此处输入图像描述

第 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 文件,因为当您添加/编辑/删除表、存储过程等时,它会被重写。

This is more like an extension to @Alex's answer.

Step 1 : Set the connection property of your .dbml file to “none”.

enter image description here

Step 2 : Create a new separate partial class with the same name as that of the existing partial class for the .dbml file. And set the connectionString property by using the parameterless constructor.

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

Step 3 : Almost Done ! Lastly you need to define your connectionString in your app.config file, as shown below.

<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>

You can now easily change the connectionString from the app.config file without having to re-compile your code, which would be the case otherwise.

Why did I create a seperate partial class ? Can’t I edit the existing Dbml.designer.cs file ?

Don’t modify Dbml.designer.cs file manually, because it will be rewritten when you add/edit/delete a table, stored proc etc.

吹梦到西洲 2024-10-26 09:35:10

不要手动修改 Dbml.designer.cs 文件,因为当您按照您所说的编辑/添加表格等时,它将被重写。相反,将 .dbml 设计器文件的 Connection 属性设置为 None 并添加具有无参数构造函数的分部类:

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

Don't modify Dbml.designer.cs file manually, because it will be rewritten when you edit/add a table etc. as you said. Instead of this set the Connection property for the .dbml designer file to None and add a partial class with parameterless constructor:

public partial class leDataContext
{ 
   public leDataContext() : 
       base(ConfigurationManager.ConnectionStrings["leConnString"].ToString())
    {
        OnCreated();
    }    
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文