【发布时间】:2017-11-17 12:26:06
【问题描述】:
我使用实体框架创建了 wpf 应用程序(数据优先) 现在连接字符串已自动创建应用配置
但我想从放置在 C 驱动器中的文本文件中获取连接字符串
【问题讨论】:
-
为什么你同时标记了 ef 和 ado.net ?
标签: c# sql wpf entity-framework ado.net
我使用实体框架创建了 wpf 应用程序(数据优先) 现在连接字符串已自动创建应用配置
但我想从放置在 C 驱动器中的文本文件中获取连接字符串
【问题讨论】:
标签: c# sql wpf entity-framework ado.net
替换上下文文件中的 Method1() 方法
public Method1()
: base("name=DB_Entities" )
{
//}
有
public Method1()
{
this.Database.Connection.ConnectionString = GlobalVariable.Conn;
}
您可以将 GlobalVariable.Conn 替换为您的连接字符串或创建 Globalvaliable 类文件并从中获取。
【讨论】:
您可以在运行时更改连接字符串,如下所示: Entity Framework change connection at runtime
但是你需要修改上面链接第一个答案中的代码:
var configNameEf = string.IsNullOrEmpty(configConnectionStringName)
? source.GetType().Name
: configConnectionStringName;
// add a reference to System.Configuration
var entityCnxStringBuilder = new EntityConnectionStringBuilder
(System.Configuration.ConfigurationManager
.ConnectionStrings[configNameEf].ConnectionString);
到:
var cString = File.ReadLines(@"c:\nameofyourfilewithconnectionstring.txt").FirstOrDefault();
if (cString !=null)
{
var entityCnxStringBuilder = new EntityConnectionStringBuilder(cString);
...
}
【讨论】:
对我来说(我试图改变数据实体框架模型的数据库的来源),最快的解决方案(但不是无风险的)是
'''
string s = File.ReadAllText("./CheckCenter.exe.config");
s = Regex.Replace(s, "(?<=data source=)(.*)(?=;initial catalog=)", newIp+ ",1433");
File.WriteAllText("./CheckCenter.exe.config", s);
'''
希望对你有所帮助^_^
【讨论】: