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((;",我可以在没有任何参数的情况下使用我的构造函数(正如我所希望的(。
您应该能够添加一个私有函数来更改实体框架连接字符串密码。
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。