Я переключил свой 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, не говоря уже о том, что он в итоге получит ОГРОМНОЕ!