powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / как вы работаете с двумя БД
13 сообщений из 13, страница 1 из 1
как вы работаете с двумя БД
    #38104915
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению приходится строить сущность (бизнес объект можно сказать) из двух контекстов. Очень неудобно. Нельзя в одном "запросе" обращаться к разным контекстам или я что-то упустил?
...
Рейтинг: 0 / 0
как вы работаете с двумя БД
    #38105221
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivan,

Код: sql
1.
2.
3.
4.
5.
USE [DB2]
GO

CREATE SYNONYM [dbo].[remote_t1] FOR [DB1].[dbo].[t1]
GO
...
Рейтинг: 0 / 0
как вы работаете с двумя БД
    #38105289
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanНельзя в одном "запросе" обращаться к разным контекстам
Это, к сожалению, ограничение ORM. В таких случаях приходят на помощь вьюхи, табличные функции или хранимые процедуры. Ничего не поделать с этим злом...
Но я бы лучше захардкодил запрос в своём репозитории (или что там у тебя) с маппингом на класс. Что-то типа такого: http://codearticles.ru/Home/ArticleView/2147
...
Рейтинг: 0 / 0
как вы работаете с двумя БД
    #38105303
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавлю еще

http://rachel53461.wordpress.com/2011/05/22/tricking-ef-to-span-multiple-databases/

Создают синонимы, генерят две EF Model'и мержат и т. п.. Вобщем на вкус.
...
Рейтинг: 0 / 0
как вы работаете с двумя БД
    #38105319
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lord British, стрёмный недокументированный способ. Ковыряния в XML edmx файлов к добру не приведут, завтра выйдет новый релиз EF с измененной структурой XML и после какого-нибудь Run Custom Tool всё упадет нафик.
Я бы так не делал. Да и завязываться на синонимы (чисто сиквельная фича) я не стал бы. Уж лучше вьюху написать.
...
Рейтинг: 0 / 0
как вы работаете с двумя БД
    #38105361
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lord British,

я пожалуй соглашусь тут с МСУ, т..к недокументированный способ может выйти боком. Наверное "захардкодить" sql и сделать ему маппинг в dao самый быстрый вариант. Сейчас пока сделал 2 коллекции - таблицы, но в уме держу исправить это на запрос. Все немного осложняется тем, что есть методы где используется select и whereExpressione. Надо их транслировать будет в обычный SQL
...
Рейтинг: 0 / 0
как вы работаете с двумя БД
    #38105398
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EDMX документирован (как минимум storage, concept, mapping). Даже книжки есть где он разжеван Bochicchio Daniele - EF 4. Это примерно также как XML-маппинг в хибере. По поводу остального спорно, но не зная что там у автора наваяли, врядли есть смысл рассуждать.
...
Рейтинг: 0 / 0
как вы работаете с двумя БД
    #38105430
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lord British,

Я даже больше скажу. CSDL, SSDL, mapping, настолько самостоятельное, что можно даже рядом со сборкой закинуть или вкомпилить в сборку. Или иметь CSDL и mapping один и тот же, а SSDL запилить под разные СУБД и т. п.. Главное скармливать их правильно в EntityConnectionString.

PS. Я тут это просвящаюсь на праздниках. Тему заводил давече.
...
Рейтинг: 0 / 0
как вы работаете с двумя БД
    #38105602
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lord BritishEDMX документирован (как минимум storage, concept, mapping). Даже книжки есть где он разжеван Bochicchio Daniele - EF 4.
Не совсем всё так хорошо, как ты думаешь. EDMX рекомендуется майкрософтом модифицировать с помощью дизайнера. Да, конечно, они допускают возможность вносить правки руками, но только для неподдерживаемого функционала самого дизайнера (таких фич немного).

http://msdn.microsoft.com/ru-ru/library/cc982042(VS.100).aspx EDMX-файл — это XML файл, определяющий концептуальную модель, режим хранения и их сопоставление. Кроме того, EDMX-файл содержит сведения, используемые конструктором моделей EDM ADO.NET (конструктор сущностей) для подготовки модели к просмотру в графическом режиме. Рекомендуется производить создание EDMX-файла с помощью мастера моделей EDM. Дополнительные сведения см. в разделе Как создать новый EDMX-файл (средства модели EDM).


То есть тебе четко черным по-белому говорится в документации, что, товарищ, не лезь руками в EDMX. При этом они соглашаются, что существуют сценарии, при которых придется изменять EDMX-файл вручную, там 5 сценариев, которые пока в дизайнере поленились сделать.

Lord BritishЭто примерно также как XML-маппинг в хибере.
Не путай божий дар с яичницей. В хибере нет дизайнера, и кроме как писать маппинги на XML (*.hbm файлы) - других вариантов нет. И только через несколько лет придумали Fluent-маппинги, потому что людям реально наста..ело ковыряться в этом XML, чуток ошибся или дрогнула рука - вся модель порушилась. Сиди потом выноси моск, где там оно что упало. Позже, конечно, был выпущен дизайнер, но он сторонний и платный - есть далеко не у каждого. Вот такая картина маслом.

P.S. Поэтому-таки я бы настоятельно не стал ориентироваться на ручное вмешательство в код, да еще и таким жестким способом, как мерж EDMX файлов через какие-то там магические манипуляции с нодами XML документа. Есть дизайнер и точка. Иначе - CodeFirst. Всё остальное от лукавого.
...
Рейтинг: 0 / 0
как вы работаете с двумя БД
    #38105699
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

авторНе путай божий дар с яичницей. В хибере нет дизайнера, и кроме как писать маппинги на XML (*.hbm файлы) - других вариантов нет.


Никто ничего не путает. И речь не шла о дизайнере.

*.csdl, *.ssdl, *.msl могут существовать без *.edmx, как самостоятельные файлы. эти три самостоятельных единицы. можно сказать аналог *.hbm, просто более болтливый . ничего designer-specific в этих трех единицах нет.

а сам edmx это просто контейнер, который в том числе содержит VS-specific фичи. если посмотришь, то при компиляции проекта этот edmx раскидывается по трем файлам *.csdl, *.ssdl, *.msl и вкомпиливаются в Assembly как ресурсы, ои могут даже распространяться, как контент к сборке. EntityFramework'у совершенно не нужен в рантайме *.edmx. Сам edmx создан исключительно для поддержки со стороны дизайнера студии.

авторРекомендуется производить создание EDMX-файла с помощью мастера моделей EDM
...
То есть тебе четко черным по-белому говорится в документации, что, товарищ, не лезь руками в EDMX.


Они не говорят, они рекомендуют и судя по-всему только потому, что это избавляет писателя кода от рутины. Вероятно, в этом контексте можно понимать фразу. В любом случае она требует уточнения. Я так понимаю публикация документации CSDL, SSDL,MSL аргумент в сторону - публичное, документированное.

Там все есть. Они даже версии спецификаций ведут. http://msdn.microsoft.com/en-us/data/jj652004

авторДа и завязываться на синонимы ( чисто сиквельная фича ) я не стал бы. Уж лучше вьюху написать.

Есть дизайнер и точка. Иначе - CodeFirst. Всё остальное от лукавого.


В этом случае (использование CodeFirst API) синонимы тоже рулят. И это, вообще говоря, не только MS SQL фича, как минимум еще Oracle умеет. Ну, а там где не умеет, можно вьюху написать.

PS. Религиозные вопросы я считаю. Автор все равно сделает согласно своему чутью, так что. :)
...
Рейтинг: 0 / 0
как вы работаете с двумя БД
    #38105869
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lord BritishEntityFramework'у совершенно не нужен в рантайме *.edmx. Сам edmx создан исключительно для поддержки со стороны дизайнера студии.
Я и не утверждал про рантайм, модель в DbFirst должна создаваться из дизайнера и только из него. Кому сейчас нужны ручные ковыряния в унылом xml?

Lord BritishОни не говорят, они рекомендуют и судя по-всему только потому, что это избавляет писателя кода от рутины.
Не от рутины, а от потенциальных ошибок. Следовать рекомендациям - хорошая практика.

Lord BritishВероятно, в этом контексте можно понимать фразу. В любом случае она требует уточнения. Я так понимаю публикация документации CSDL, SSDL,MSL аргумент в сторону - публичное, документированное.
Насчет документирования согласен, погорячился в начале - спецификации есть. Но заморачивать разработчика ими я бы не стал - кому нужен этот геморой со всеми вытекающими. Разработчик пусть сосредотачивается на прикладной задаче, а не на ковыряниях в xml, в котором легко ошибиться. Ручные xml маппинги - зло.

Lord BritishВ этом случае (использование CodeFirst API) синонимы тоже рулят. И это, вообще говоря, не только MS SQL фича, как минимум еще Oracle умеет. Ну, а там где не умеет, можно вьюху написать.
О том и речь, лучше вьюху.

Lord BritishPS. Религиозные вопросы я считаю. Автор все равно сделает согласно своему чутью, так что. :)
Ок, я высказал чисто своё мне по вопросу :)
...
Рейтинг: 0 / 0
как вы работаете с двумя БД
    #38106019
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если нет edmx? :)
...
Рейтинг: 0 / 0
как вы работаете с двумя БД
    #38106209
Lord British
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanа если нет edmx? :)

выше написано. synonym/view. выбирайте в зависимости от звезд на небе.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / как вы работаете с двумя БД
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]