Я новичок во всем этом, и мне нравится знать, как опытные программисты справляются со следующей ситуацией
Допустим, у меня есть таблица «Поставщик» с некоторыми общими полями, а также полями 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?
Спасибо за любыеответ, который может направить меня к хорошему подходу к этой ситуации Люк