.Net - доступ к нескольким группам/базам данных sql-сервера

Моя программа (служба WCF, запрограммированная на С#) должна обращаться к нескольким группам серверов sql и базам данных в этих группах (сервер sql). Похоже, что linq 2 sql определенно не поддерживает это, если я не создам несколько классов данных для каждой базы данных, и похоже, что структура сущностей находится в одной лодке.

Как бы вы настроили свое приложение, которое должно обращаться к нескольким группам серверов sql, которые не связаны между собой?

Я полагаю, что мог бы просто использовать SqlConnection и SqlCommand и создать несколько классов для их обработки. Если я пойду по этому пути, как я буду заполнять свои классы моделей результатом запроса? (Я не хочу использовать таблицы данных, а скорее List<T>)

I.E.

Server1
 - database 1
 - database 2
Server2
 - database 3
 - database 4

Моя программа должна получить доступ к базе данных 1 и базе данных 4, и они не связаны / не будут связаны.


person Chris Klepeis    schedule 25.08.2010    source источник


Ответы (1)


Вы можете использовать EF или LinqToSql для доступа к каждой БД. Ваш сервис будет работать как брокер. Он будет собирать результаты из разных баз данных и создавать DTO с полными данными.

Изменить:

Если у вас есть SP с одинаковым именем, вы можете повторно использовать одну модель EF. Если у вас есть SP с разными именами, вы можете создать модель для каждой базы данных. Сущности будут фактически одинаковыми, поэтому вы можете использовать подход POCO (только EF 4.0), который сопоставляет сущность из модели с вашим классом POCO. Класс POCO будет использоваться всеми моделями.

person Ladislav Mrnka    schedule 25.08.2010
comment
это правда, но, насколько я понимаю, мне придется создать новый файл linq 2 sql или EF для каждой базы данных... чего я стараюсь избегать. Я хочу, чтобы они использовали одни и те же DTO. - person Chris Klepeis; 25.08.2010
comment
Эти базы данных имеют одинаковую структуру? Итак, вы хотите получить одни и те же данные из этих баз данных? - person Ladislav Mrnka; 25.08.2010
comment
Нет, структуры базы данных совершенно другие, но SP'ы я хочу называть псевдонимами полей, чтобы они соответствовали объекту модели. т.е. запрос адреса в одной базе данных просматривает разные таблицы, чем запрос адреса в другой базе данных, однако SP будет возвращать те же имена полей для заполнения одной и той же объектной модели. - person Chris Klepeis; 25.08.2010
comment
Итак, я думаю, вы ищете EF 4.0 + POCO, где POCO будет использоваться совместно. Проверьте измененный ответ. - person Ladislav Mrnka; 25.08.2010