2010-04-27 2 views
7

Мне было интересно, поддерживает ли EF4 кросс-дэптэсс-связь? Например:EF4 перекрестные отношения с базой данных

db1

Author 
    Id 
    Name 

db2

Posts 
    Id 
    Content 
    db1.Author.Id 

Что в идеале мне нужно сделать, чтобы получить это соотношение в моей Ef4 модели?

У вас есть идеи?

Благодаря

ответ

5

Я нашел this entry in Microsoft Connect, который отвечает на вопрос о поддержке, предоставляемой в данный момент EF (на самом деле она еще не поддерживается).

Также найдено a thread in Social MSDN об этой проблеме.

Другие ссылки на переполнение стека:

В итоге, только данные альтернативы:

  1. Using views in EF

  2. Use NHibernate instead

3

Я недавно начал проект, который использует структуру сущностей с двумя базами данных, один Oracle и один SQL Server. Я не мог найти никакой информации о кросс-базе данных или поддержке нескольких баз данных в инфраструктуре сущности.

Большинство сообщений из команды разработчиков MS Entity составляют пару лет и указывают, что включение двух баз данных в одну модель не является функцией, которая будет включена в ближайшее время. Мне было бы интересно получить конкретный ответ о том, был ли он включен в 2010 году сам, хотя я подозреваю, что ответ отрицательный.

В настоящее время проект обходит это ограничение, имея отдельную модель сущности для каждой базы данных. Это решило проблему для большинства сценариев, с которыми мы столкнулись на данный момент в проекте.

В тех случаях, когда нам необходимо было одновременно запрашивать данные из двух баз данных, мы просто создали представление в одной или других базах данных. Поскольку мы используем Oracle и SQL Server, в этом представлении будет использоваться Linked Server (SQL) или DBLink (Oracle).

Недостаток представлений в структуре сущности заключается в том, что нам пришлось потратить больше времени, чем я ожидал, что основные рабочие ключи будут работать.

Надеюсь, это поможет.

4

Если ваша база данных поддерживает синонимов, вы можете обмануть EF, чтобы охватить несколько баз данных. Я написал, как это сделать here.

В основном вы получаете файл edmx для каждой базы данных и скрипт, который объединяет их в один файл edmx. Синонимы используются для ссылки на одну базу данных из другой, используя фактическое имя таблицы, поэтому EF не бросает подгонку, когда вы пытаетесь получить доступ к базе данных2.table из базы данных1. Вам все равно нужно настроить ссылки между двумя базами данных вручную в EF-модели, но после установки они останутся, даже если вы повторно запустите скрипт слияния.

Сценарии для установки синонимов и объединить файлы EDMX размещены в ссылке

+0

Я предлагаю вам проголосовать мой UserVoice предложение здесь: http://visualstudio.uservoice.com/forums/121579-visual-studio/ предложения/2730532-make-entity-framework-designer-support-synonyms Если мы сможем получить поддержку синонимов в дизайнере, то это все просто. Кроме того, поощряйте всех, кого вы можете найти, кто заинтересован в поддержке кросс-баз данных, чтобы проголосовать за это. –

Смежные вопросы