Установите строку соединения Entity Framework в Runtime в С#
Мне нужно установить строку подключения Entity Framework во время выполнения. Сейчас у меня есть следующее:
string connectionString = "metadata=res://*/DataModels.CustomerDataModel.csdl|res://*/DataModels.CustomerDataModel.ssdl|res://*/DataModels.CustomerDataModel.msl;provider=System.Data.SqlClient;provider connection string="data source=tcp:{serverName},{portNumber};initial catalog={databaseName};user id={username};multipleactiveresultsets=True;application name=EntityFramework"";
using (CustomerEntities entities = new CustomerEntities(connectionString))
{
CustomerEntity entity = new CustomerEntity();
// do more
entities.CustomerEntities.Add(entity);
entities.SaveChanges();
}
Когда я выполняю приведенный выше код (при замене значений {parameter}), я получаю следующую ошибку:
Ключевое слово не поддерживается: 'источник данных'.
Что я делаю неправильно?
Ответы
Ответ 1
Измените это.
string connectionString = "metadata=res://*/DataModels.CustomerDataModel.csdl|res://*/DataModels.CustomerDataModel.ssdl|res://*/DataModels.CustomerDataModel.msl;provider=System.Data.SqlClient;provider connection string="data source=tcp:{serverName},{portNumber};initial catalog={databaseName};user id={username};multipleactiveresultsets=True;application name=EntityFramework"";
Для этого (обратите внимание, как я избежал символа как "")
string connectionString = @"metadata=res://*/DataModels.CustomerDataModel.csdl|res://*/DataModels.CustomerDataModel.ssdl|res://*/DataModels.CustomerDataModel.msl;provider=System.Data.SqlClient;provider connection string= ""data source=tcp:{serverName},{portNumber};initial catalog={databaseName};user id={username};multipleactiveresultsets=True;application name=EntityFramework""";
Ответ 2
Я знаю, что это было спрошено 10 месяцев назад, но я нашел более простой способ указать connectionString:
Если ваш файл конфигурации имеет его как:
<connectionStrings>
<add name="CustomerDataModel" connectionString="metadata=res://*/EntityFramework.CustomerDataModel.csdl|res://*/EntityFramework.CustomerDataModel.ssdl|res://*/EntityFramework.CustomerDataModel.msl;provider=System.Data.SqlClient;provider connection string="data source=.\CustomerDataModel;initial catalog=CustomerDB;integrated security=True;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
Вы можете указать его как -
public const string ConnectionString = @"name=CustomerDataModel";
..
CustomerDBContext context = new CustomerDBContext(ConnectionString );
Не нужно беспокоиться о котировках. Лот.
Ответ 3
Легче использовать EntityConnectionStringBuilder и SqlConnectionStringBuilder для изменения параметров, как вы хотите.
Ответ 4
установите несколько строк подключения в свой web.config и следуйте ниже:
public partial class MyDatabaseEntities
{
public MyDatabaseEntities(string connection)
: base(connection)
{
}
}
а затем везде, где вы хотите создать экземпляр объектов, введите имя строки подключения в параметре:
MyDatabaseEntities entities = new MyDatabaseEntities("CONNECTION_STRING_NAME");
Надеюсь, это поможет.
Спасибо