Я работаю над тем, чтобы перевести мой простой сайт asp.net на трехслойную архитектуру.В настоящее время у меня есть запросы Linq, подобные приведенному ниже, в моих файлах с выделенным кодом.По сути, этот фрагмент кода извлекает коллекцию данных о клиентах из базы данных, а затем связывает ее с элементом управления сеткой.
Мне интересно, может ли кто-нибудь подсказать мне, как переписать это, чтобы переместить его в мою новуюслой доступа к данным.Я думаю, что превращу его в класс (например, GetUserBoxesByStatus ()), который можно повторно использовать по всему сайту.
var boxes = from p in sbm.Packages
where p.UserID == CurrentUserId && p.StatusID > 1 && p.StatusID < 3
select new { p.PackageTag, p.PackageName, p.DateReceived, p.DateShipped };
GridView1.DataSource = boxes;
DataBind();
Некоторые из опций, которые я исследовал, но не имели успеха в реализации,следующее:
DataTable - возвращение DataTable кажется лучшим решением, но также требуется много необязательного кода для определения таблицы (разве источник данных уже не отображен вмой Linq 2 Entities dbml?) IEneuerable --- Я думаю, что мог бы передать список IEnumerable между слоями, но после прочтения многих руководств по Linq я все еще немного растерялся DTO --- Концептуально японимаю, что такое DTO, но мне не ясно, как начать реализацию этого подхода POCO --- Опять же, концепция кажется достаточно логичной, но я не знаю, как применить это на практике
IЯ надеюсь, что кто-то здесь может взглянуть на мой пример кода и предложить, как он будет решать эту проблему, используя одно из приведенных выше или другое решение.