ADO.Net Entity Framework для нескольких баз данных
Есть ли способ добиться этого в Linq 2 Entities / ADO.net Entity Framework? Можно ли где-нибудь добавить имя базы данных к имени таблицы?
Я пытался изменить "Схему" с dbo на MyDatabase.dbo, но EF инкапсулирует это в
SELECT FROM [MyDatabase.dbo].[MyTable]
Хитрость, например, смена схемы на MyDatabase.[Dbo] будет экранирована в
SELECT FROM [MyDatabase]].[dbo].[MyTable]
(Имейте в виду два ]]
.)
2 ответа
Во-первых, это официально не поддерживается.
Ответ, на который вы ссылаетесь для LINQ to SQL, заключается лишь в том, чтобы использовать сервер БД для выполнения разнородных запросов. Я не понимаю, почему это не сработало бы для Entity Framework, так как это функция сервера БД, а не функция обеих платформ. Другими словами, LINQ to SQL по-прежнему работает с соединением, как если бы был задействован только один сервер базы данных. Имейте в виду, однако, что не все серверы БД могут делать это.
Что касается того, что нужно изменить в EDMX, найдите атрибут Schema узла EntitySet в разделе "Содержимое SSDL".
Одно предостережение об этой технике заключается в том, что при обновлении модели из базы данных модель хранилища стирается и заменяется с нуля. Таким образом, вам нужно будет повторно применить эти изменения. Это не проблема в LINQ to SQL, поскольку LINQ to SQL вообще не поддерживает автоматическое обновление из базы данных.
Лучшей альтернативой, вероятно, будет создание VIEW в базе данных, которая ссылается на другую базу данных, и сопоставление этого представления вместо непосредственного отображения таблицы и другой базы данных.
Если ваша база данных поддерживает синонимы SQL, вы можете объединить два определения базы данных в один файл. Я сделал это недавно и опубликовал, как я сделал это здесь, если вам интересно.
По сути, вы создаете синонимы для базы данных A, указывающие на базу данных B, создаете отдельный файл edmx для каждой базы данных, а затем запускаете сценарий для объединения файлов edmx в один файл, который подключается к любой базе данных, для которой настроены синонимы.