C # Где разместить код, который получает данные графического интерфейса? - PullRequest
2 голосов
/ 09 июня 2009

Я ломаю голову, где разместить код. У меня есть список и элементы списка хранятся в базе данных. Дело в том, где я должен разместить код, который извлекает данные из базы данных? У меня уже есть класс базы данных с методом ExecuteSelectQuery (). Должен ли я создать класс Utility с методом public DataTable GetGroupData ()? / * группа - это список * / Затем этот метод вызывает метод ExecuteSelectQuery () из класса базы данных.

Что мне делать?

Ответы [ 4 ]

4 голосов
/ 09 июня 2009

Существует множество шаблонов доступа к данным, которые вы можете использовать. Шаблон репозитория может привести вас туда, куда вам нужно.

Идея состоит в том, чтобы иметь класс GroupRepository, который выбирает данные группы. Это не должно быть слишком сложным. Простой метод, такой как GetAllGroups, может вернуть коллекцию, которую вы можете использовать для элементов ListBox.

2 голосов
/ 09 июня 2009

Вы можете просто абстрагировать код базы данных в служебный класс, как вы предлагаете, и это не будет ужасным решением. (Вы, вероятно, не можете стать намного лучше с WebForms.) Тем не менее, если система будет довольно сложной, то вы можете выбрать более формальную архитектуру ...

Вероятно, лучшим вариантом для ASP.NET является ASP.NET MVC Framework , который полностью заменяет WebForms. Он построен на основе шаблона архитектуры Model-View-Controller , который специально разработан для четкого разделения кода для пользовательского интерфейса и логики, которая кажется именно той, которую вы хотите. (Действительно, это делает дизайн веб-сайтов намного более структурированным.)

Кроме того, если вы хотите создать более структурированную модель для вашей системы баз данных, рассмотрите возможность использования ORM, например ADO.NET Entity Framework . Однако это может быть излишним, если ваша база данных не очень сложна. Использование шаблона MVC, вероятно, значительно улучшит ситуацию.

1 голос
/ 09 июня 2009

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

Я бы порекомендовал вам Руководство по архитектуре приложений .

Pavel

0 голосов
/ 09 июня 2009

Похоже, у вас уже есть слой доступа к данным, реализованный через ваш класс базы данных. Я думаю, что путаница в настоящее время заключается в реализации презентационного и бизнес-уровней. Для меня «GetGroupData» является частью бизнес-уровня и является правильной для реализации. Это позволит вам вносить изменения в будущем с минимальным влиянием на уровень презентации или вообще без него. Поэтому предложенный вами поток выглядит правильно. LoadListBox, за которым следует GetGroupData, за которым следует ExecuteSelectQuery.

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