Entity Framework 4 и несколько баз данных
Что-то меняется или все еще не поддерживает это? Например, присоединитесь к database1.dbo.Users и database2.dbo.Addresses
3 ответа
Я думаю, что спрашивают, можете ли вы объединить таблицы из разных баз данных, а не разных провайдеров, в результате чего одна сущность сопоставляется с двумя или более таблицами или представлениями из разных баз данных.
Если вы подумаете об этом, когда вы создаете модель EDM с помощью Visual Studio, она просит вас предоставить существующую базу данных, а когда она завершает создание модели, генерирует строку соединения EF, которая внутренне обращается к данной базовой строке соединения с базой данных.
Например: metadata = res: ///EFTestModel.csdl|res:///EFTestModel.ssdl|res:///EFTestModel.msl;provider=System.Data.SqlClient;строка подключения провайдера ="Источник данных =.\; Исходный каталог =EFTest; Интегрированная безопасность = True; MultipleActiveResultSets = True" *
Таким образом, каждая модель соответствует только базе данных, только строке подключения.
EF4 все еще не поддерживает создание одной концептуальной модели, которая работает с N моделями хранения. По крайней мере, это не поддерживается ни одним встроенным провайдером. Возможно, в будущем это можно будет сделать через нового провайдера, который объединяет поддержку множества хранилищ (от одного или разных провайдеров).
Я не провел достаточно исследований, но, возможно, Windows Server AppFabric (Codename Velocity) мог бы стать мостом для преодоления этого пробела.
Примечание. Я попытался даже вручную отредактировать xml для EDM (edmx), чтобы вставить второй элемент в тег
Рафа Ортега MAP2010
Я действительно нашел способ сделать модель EF охватывающей несколько баз данных, если ваша база данных поддерживает синонимы. В основном вы устанавливаете Синонимы для Database2 на Database1, создаете отдельные модели edmx для каждой, а затем объединяете XML
Я опубликовал точные шаги для создания файла edmx, охватывающего несколько баз данных, если вам интересно, вместе со сценарием, который выполняет слияние для вас, когда что-то меняется.
Смотрите ответ на аналогичный вопрос:
Entity Framework - Вставка объекта с несколькими моделями и базами данных