Подтвердить что ты не робот

Почему для Entity Framework Connection требуется свойство метаданных?

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

4b9b3361

Ответ 1

Вы найдете эти ссылки очень информативными:

http://msdn.microsoft.com/en-us/library/system.data.entityclient.entityconnection.connectionstring.aspx

http://weblogs.asp.net/pgielens/archive/2006/08/21/ADO.NET-Entity-Framework-Metadata.aspx

Нижняя линия? Entity Framework нуждается в метаданных для построения сопоставлений сущностей.

Кроме того, вам следует переместить информацию о подключении в файл конфигурации, а не создавать ее в коде. Первая ссылка покажет вам, как это сделать.

Ответ 2

Развернувшись на ответ Рэндолфо:

Свойство метаданных конкретно указывает на расположение файлов .SSDL(Model Model,).CSDL(Концептуальная модель) и .MSL(Mapping Model). Эти три файла по существу представляют собой модель данных сущности. Обозначение "res://" в стиле URI указывает, что файлы встроены в ресурсы в сборную сборку EDM.