Linq to Entities (запрос на присоединение) - WPF - 4-уровневое приложение - PullRequest
0 голосов
/ 24 февраля 2011

Я новичок во всем этом, и мне нравится знать, как опытные программисты справляются со следующей ситуацией

Допустим, у меня есть таблица «Поставщик» с некоторыми общими полями, а также полями MailingAddress, BillingAddress, которые равны 2ключевые поля для ссылки на другую таблицу "Адрес"

Поставщик TB

Id = 1 Name = MyNameFoo MailingAddressId = 100 BillingAddress = 101

Адрес TB

Id = 100 Street = MailingStreetFoo City = MailingCityFoo

Id = 101 Street = BillingStreetFoo City = BillingCityFoo


У меня 4-уровневое прикладное решение:

project xyz.WPF, который содержит все мои окна WPF для представления данных пользователю (список со связыванием)

проект xyz.Business: между WPF и DataAccess (SupplierB.vb, AddressB.vb)

project xyz.DataAccess.SqlServer: слой данных (SupplierDAL.vb, AddressDAL.vb)

project xyz.Entities: хранить мои классы сущностей, каждый из которых представляет таблицу, и простовладение свойствами.Я использую это для перехода от одного уровня к другому (SupplierE.vb, AddressE.vb).

Класс SupplierDAL получает данные из SQL Server и возвращает «List (Of SupplierE)» в класс SupplierB, который возвращает это «List (Of SupplierE) "в WPF, где он связан со списком -> Listbox.ItemsSource = SupplierB.GetAllSuppliers ().


Теперь я могу получить всех поставщиков и показать их в окне WPF всписок (или сетка данных, ...) Также я могу получить все адреса и показать их.

Но в какой-то момент я хочу получить все адреса (Mailing, Billing) для одного поставщика.Я знаю, как написать свой запрос с помощью linq (объединить 2 таблицы), но что мне нужно делать с результатом этого.Это не поставщик и не адресат;это комбинация двух.Я хочу, чтобы результат был объектом, который я мог бы передать по слоям, как в SupplierE.vb, AddressE.vb.Конечно, я мог бы создать другую сущность, такую ​​как SupplierAddressesE.vb;проблема решена, но в моем реальном реальном решении у меня есть десятки запросов на объединение с объединениями между несколькими различными таблицами (не только поставщик, адрес).

Так много таблиц, много результатов запросов на объединение;Означает ли это, что я должен создать объект-сущность (xxxE.vb) для каждого отдельного запроса на соединение или есть другой способ сделать это в приложении с 4 уровнями с Linq to Entities?

Спасибо за любыеответ, который может направить меня к хорошему подходу к этой ситуации Люк

1 Ответ

0 голосов
/ 24 февраля 2011

Если вы лениво загружаете объекты, то у вашего поставщика должен быть прикрепленный адресный объект для каждой рассылки / биллинга. Почему бы просто не создать надлежащий класс поставщика, который имеет свойства для рассылки / выставления счетов, которые являются классами адресов, а не идентификаторами?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...