Я переключил свой DAL с помощью LINQ на Entity Framework. Поскольку мое приложение подключается к различным базам данных в зависимости от текущего пользователя, мне нужно динамически создавать DataContext во время выполнения и передавать соответствующую строку соединения. Однако, когда я попытался запрограммировать создание соединения Entity Framework, используя мою старую строку соединения, соединение не удалось. Он жаловался, что он не распознал ключ в строке соединения, "сервер", если быть точным.
Я выяснил, что мне нужно было сделать это, чтобы работать с Entity Framework:
EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
entityBuilder.Provider = "System.Data.SqlClient";
entityBuilder.ProviderConnectionString = clientConnectionString;
entityBuilder.Metadata = "res://*/xxxxxxxxxx.csdl...";
Entities entities = new Entities(entityBuilder.ToString());
Почему это?
Что такое свойство метаданных?
Будет ли проблема, что она всегда одинакова для нескольких разных подключений?
Что это должно быть?
Есть ли способ обойти это?
Спасибо заранее!
Обновление 1: Спасибо за обновление Randolpho, но... Вся причина, по которой у меня возникает эта проблема, заключается в том, что я не могу хранить строки подключения в файле конфигурации. Строка соединения динамически определяется во время выполнения, с которой пользователь подключается.
Вот мой точный сценарий:
Если пользователь A подключается, приложение извлекает данные из базы данных A. Если пользователь B подключается, приложение извлекает данные из базы данных B.
Строки подключения хранятся в основной базе данных, и число их данных неограниченно. Каждый раз, когда я добавляю пользователя, я не хочу заходить в web.config, не говоря уже о том, что он в конечном итоге станет ОГРОМНЫМ!