entity framework-如何从app.config文件中获取实际的连接字符串值,并在DbContext构造函数

本文关键字:字符串 连接 构造函数 DbContext 并在 获取 framework- app 文件 config entity | 更新日期: 2023-09-27 17:52:48

大师。

我尝试在DbContext构造函数中添加密码字符串,但我做不到。

如何从app.config文件中获取实际的连接字符串值,并在DbContext构造函数C#中添加密码字符串?

我使用的是EF 6和winforms C#。

提前谢谢。

public partial class ficharioEntities : DbContext
{
    public ficharioEntities()
        : base("name=ficharioEntities")
    {
        // How get a actual connection strings values from app.config file and add a password string here
    }

更新:

我刚刚使用了这篇文章如何在代码中为ADO中的连接字符串提供密码。Net实体数据模型来解决我自己的问题,代码中有一点更改。

    public ficharioEntities()
        : base("name=ficharioEntities")
    {
        var originalConnectionString = ConfigurationManager.ConnectionStrings["ficharioEntities"].ConnectionString;
        var entityBuilder = new EntityConnectionStringBuilder(originalConnectionString);
        var factory = DbProviderFactories.GetFactory(entityBuilder.Provider);
        var providerBuilder = factory.CreateConnectionStringBuilder();
        providerBuilder.ConnectionString = entityBuilder.ProviderConnectionString;
        providerBuilder.Add("Password", "<password_here>");
        this.Database.Connection.ConnectionString = providerBuilder.ToString();
    }

有了这部分代码">this.Database.Connection.ConnectionString=providerBuilder.ToString((;",我可以在没有任何参数的情况下使用我的构造函数(正如我所希望的(。

entity framework-如何从app.config文件中获取实际的连接字符串值,并在DbContext构造函数

您应该能够添加一个私有函数来更改实体框架连接字符串密码。

public partial class ficharioEntities : DbContext
{
     public ficharioEntities(string password)
                        :base(GetEntityConnectionString(password))
     {

     }
     private static string GetEntityConnectionString(string password){
          string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["fichario"].ConnectionString;
          System.Data.EntityClient.EntityConnectionStringBuilder entityconnection = new System.Data.EntityClient.EntityConnectionStringBuilder(s);
       //EntityConnectionStringBuilder inherits from DBConnectionStringBuilder 
      //so you should be able to replace the password simply
      entityconnection["Password"] = password;
     //otherwise, if you know the connection properties you need
    //you could rebuild an entity connection object.
        return entityconnection.ToString();
     }
}

考虑到您的问题,我有几个解决方案可以使用。这与基本的明文文件IO有关,所以请确保稍后查看几篇教程,以了解更多信息。

1:JSON

如果您的配置文件使用JSON格式,则可以使用JSON解析器来获取所需的信息。它对你和电脑来说都很容易阅读,是将信息存储在纯文本文件中的一种有用方式,可以轻松编辑。如果是这样的话,请查找C#JSON解析。

2:StreamReader+String。包含

如果您的配置文件没有格式或使用自己的格式,但格式仍然很整齐或易于阅读,那么接下来可以使用StreamReader从文件中读取,然后使用String。包含以标识所需参数的位置,并最终从文件中提取该参数。这听起来比实际情况更容易,因为大多数时候都是字符串。包含无法处理格式/周围字符。在这种情况下,您使用。。。

3:StreamReader+REGEX

和以前一样,除非你需要在复杂或混乱的明文文件字符串中查找信息。Contains无法识别文本中复杂的变化模式。请参阅,而字符串。包含可以识别精确的字符模式,REGEX可以使用特殊字符处理复杂的模式。例如,正则表达式''s''w+''s在两个空格之间查找任意数量的字母。因此,如果您需要在复杂的模式中查找信息,regex就是您的选择。我建议您找到一个在线regex测试程序,并围绕您需要找到的东西构建regex。