Регулярное выражение для удаления метаданных

#.net #entity #connection-string

#.net #сущность #строка подключения

Вопрос:

Я пытаюсь создать приложение с использованием некоторой Entity Framework и некоторых старых наборов данных, но у меня есть только динамическая строка подключения с использованием entity, и мне нужно удалить метаданные во время выполнения, чтобы создать строку подключения к моей базе данных. Кто-нибудь знает способ удалить все метаданные из подключения Entity Framework

У меня есть это

 metadata=res://*/Models.SiteModel.csdl|res://*/Models.SiteModel.ssdl|res://*/Models.SiteModel.msl;provider=System.Data.SqlClient;provider connection string=amp;quot;Data Source=(local);Initial Catalog=MyDB;Persist Security Info=True;User ID=sa;Password=P@ssw0rd;MultipleActiveResultSets=Trueamp;quot;
  

и нужно только это:

 Data Source=(local);Initial Catalog=MyDB;Persist Security Info=True;User ID=sa;Password=P@ssw0rd;MultipleActiveResultSets=True
  

Ответ №1:

Вы можете использовать EntityConnectionStringBuilder класс:

 string connectionString = "metadata=res://*/Models.SiteModel.csdl|res://*/Models.SiteModel.ssdl|res://*/Models.SiteModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=(local);Initial Catalog=MyDB;Persist Security Info=True;User ID=sa;Password=P@ssw0rd;MultipleActiveResultSets=True"";
EntityConnectionStringBuilder builder = new EntityConnectionStringBuilder(connectionString);
builder.Metadata = null;
connectionString = builder.ConnectionString;
  

Комментарии:

1. Очень приятно, это более простые способы. Ты спас мне день 😉

2. Мне очень помогло! Намного проще, чем пытаться написать регулярное выражение для извлечения информации. Также используется как @pedrofernandes, упомянутый в его ответе на использование builder.ProviderConnectionString

Ответ №2:

Лучшее свойство для использования — это builder.ProviderConnectionString вместо удаления метаданных из конструктора для получения build.ConnectiongString .

Комментарии:

1. Да, и откуда берется эта переменная builder. Ваш ответ неполный.

Ответ №3:

Я знаю, что это старый пост, но он публикуется для других.

     string connectionString;
    connectionString = ConfigurationManager.ConnectionStrings["NameOfConnectionInApp.Config"].ConnectionString;

    System.Data.Entity.Core.EntityClient.EntityConnectionStringBuilder entityConnectionStringBuilder = new System.Data.Entity.Core.EntityClient.EntityConnectionStringBuilder(connectionString);
    System.Data.SqlClient.SqlConnectionStringBuilder sqlConnectionStringBuilder = new SqlConnectionStringBuilder(entityConnectionStringBuilder.ProviderConnectionString);
    string databaseName = sqlConnectionStringBuilder.InitialCatalog;