Существует ли метод .NET для захвата источника данных для строки подключения платформы сущностей? - PullRequest
1 голос
/ 05 мая 2011

Я хочу получить источник данных из строки подключения.Я знаю, что могу использовать

ConfigurationManager.ConnectionStrings["name"].ConnectionString

и извлечь его с помощью регулярных выражений.Но, похоже, должен быть простой способ получить этот источник данных.Я не хочу брать из позиции символа, потому что это было бы хрупким для любых изменений в порядке строки.

ОБНОВЛЕНИЕ Я использую Entity Framework 4. Строка подключения генерируется и начинается с

metadata=res://*/

Это кажется усложняющим, поскольку предлагаемый объект SqlConnectionStringBuilder выдает ошибку

"Ключевое слово неподдерживается: 'метаданные'. "

Ответы [ 4 ]

4 голосов
/ 24 сентября 2012

Это можно сделать (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

Надеюсь, это поможет.

1 голос
/ 27 июля 2015

Если вы получаете ошибку метаданных

"Ключевое слово не поддерживается: 'метаданные'."

, вы можете сначала использовать 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;
1 голос
/ 05 мая 2011

Я нашел это скрытым в контексте.

EntityContextName context = new EntityContextName();
string datasourceName = context.Connection.DataSource;
0 голосов
/ 05 мая 2011

Да, есть класс SqlConnectionStringBuilder, который должен дать вам то, что вы хотите.

Взгляните на документацию MSDN , это должно вас приблизить, вот подробное описание , вам, скорее всего, просто потребуется перечислить с помощью клавиш.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...