是否有.net方法来获取实体框架连接字符串的数据源?
本文关键字:字符串 连接 数据源 框架 实体 net 方法 获取 是否 | 更新日期: 2023-09-27 17:54:49
我想从连接字符串中获取数据源。我知道我可以使用
ConfigurationManager.ConnectionStrings["name"].ConnectionString
并使用正则表达式将其提取出来。但是,似乎应该有一种简单的方法来获取这个数据源。我不想从字符位置抓取,因为这对于字符串顺序的任何改变都是脆弱的。
我正在使用实体框架4。生成以
metadata=res://*/
这似乎使事情变得复杂,因为建议的对象SqlConnectionStringBuilder
抛出错误
"关键字不支持:'metadata'."
可以这样做(vb.net):
Dim varConnectionString = Web.Configuration.WebConfigurationManager.ConnectionStrings("iSAMDBEntities").ConnectionString
Dim ecb As EntityConnectionStringBuilder = New EntityConnectionStringBuilder(varConnectionString)
varConnectionString = ecb.ProviderConnectionString
Dim varBiulder As SqlConnectionStringBuilder = New SqlConnectionStringBuilder(varConnectionString)
varServidor = varBiulder.DataSource
varBaseDatos = varBiulder.InitialCatalog
varUsuario = varBiulder.UserID
varClave = varBiulder.Password
如果你得到元数据错误
"关键字不支持:'metadata'."
你可以首先使用EntityConnectionStringBuilder,它可以接受带有元数据的连接字符串。
string connectionStringWithMetadata = ConfigurationManager.ConnectionStrings["DbEntities"].ConnectionString;
EntityConnectionStringBuilder entityConnectionStringBuilder = new EntityConnectionStringBuilder(connectionStringWithMetadata);
SqlConnectionStringBuilder connectionStringBuilder = new SqlConnectionStringBuilder(entityConnectionStringBuilder.ProviderConnectionString);
// And now you can extract parts of the connection string
string dbUserName = connectionStringBuilder.UserID;
string dbPassword = connectionStringBuilder.Password;
我发现它隐藏在上下文中。
EntityContextName context = new EntityContextName();
string datasourceName = context.Connection.DataSource;
是的,有一门SqlConnectionStringBuilder
课程可以让你得到你想要的。
看一下MSDN文档,这应该会让你接近,这里是完整的细节,你很可能只需要枚举键。