Entity Framework: использование нескольких схем или двух разных баз данных?

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

Но как мне получить доступ к обеим схемам одновременно через EF? Будет ли у меня по существу два разных соединения? Или у меня будет два разных контекста?

Другой вариант, который у меня есть, - создать другую базу данных, но я не знаю, какие у нее плюсы и минусы. Конечно, мне нужно было бы создать ВНУТРЕННИЕ СОЕДИНЕНИЯ между моими таблицами и другими таблицами. Можно ли использовать внутренние соединения в EF между двумя разными схемами или базами данных?

Я использую базу данных SQL Server 2008 R2.


person Martin    schedule 01.07.2012    source источник
comment
Я думаю, что все мысли, которые вы здесь спрашиваете, вполне возможны, вы что-то пробовали?   -  person HichemSeeSharp    schedule 02.07.2012


Ответы (1)


Если вы хотите использовать соединение между таблицами из двух схем, обе эти таблицы должны быть определены в одном и том же контексте (это также означает, что будет использоваться одно соединение).

После того, как вы используете два разных типа контекста для сопоставления каждой схемы отдельно или когда вы используете две базы данных, вы не сможете использовать сущности из другой схемы в запросах Linq-to-entities / ESQL, и вы не сможете использовать свойства навигации для таблицы. из другой схемы. Обходные пути в таком случае сложны, потому что вы должны использовать псевдоним или представление базы данных, чтобы получить таблицу из второй базы данных в первую.

EF может работать только с объектами базы данных, сопоставленными с текущим контекстом, и может открывать соединение только с одной базой данных (он также не может использовать префикс базы данных для доступа к таблицам из другой базы данных на одном сервере).

person Ladislav Mrnka    schedule 02.07.2012