Шаблон проектирования ASP.NET MVC - Репозиторий и классы данных - Какова лучшая практика? - PullRequest
0 голосов
/ 21 октября 2011

У меня есть проект с ASP.NET MVC, использующий Entity Framework для получения данных из базы данных SQL.

Я разработал классы данных, которые содержат такую ​​информацию, как статистика (класс объединяет идентификатор продукта, его записи, которые являются подклассом), и затем я понял, что для помещения данных в эти классы мне потребуется набор функции, чтобы получить данные из SQL и поместить в классы данных.

Затем я нашел метод репозитория и хотел спросить: это просто набор функций, который хранит бизнес-логику в одном месте? Или это сложнее? У меня есть интерфейс для этого, а затем реализация.

Ответы [ 3 ]

2 голосов
/ 21 октября 2011

Идея хранилища состоит в том, чтобы предоставить вашему коду одно место, куда они могут пойти, чтобы получить данные из некоторого постоянного хранилища (большую часть времени из вашей базы данных). Ваша бизнес-логика будет на другом уровне.

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

Другими шаблонами, которые вы можете посмотреть, являются UnitOfWork (пример этого - ObjectContext, используемый в Entity Framework) и шаблоны проектирования Layering, которые показывают, как отделить код доступа к данным от вашего бизнес-кода.

Вы уже упоминали об отделении интерфейса от реализации. Кодирование интерфейса также является хорошей практикой.

Здесь вы можете найти больше информации. PEAA также содержит другие отличные описания шаблонов проектирования и способы их использования.

1 голос
/ 21 октября 2011

Репозитории - это классы не для бизнес-логики, а для логики сохранения данных. У вас должен быть другой слой с бизнес-логикой. В репозиториях у вас должны быть такие методы, как FindById, FindByName, Update (Entity entity) ... Операции с репозиториями обычно работают с объектами в памяти, и когда вы хотите сохранить ваши изменения, вы вызываете Commit (или somethink simmilar) для вашего объекта контекста данных - это подход называется единицей работы.

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

1 голос
/ 21 октября 2011

У меня есть интерфейс для этого, а затем реализация

Вот и все. Вы определяете набор операций, которые вы хотите выполнять над своими бизнес-объектами в интерфейсе, а затем реализуете этот интерфейс для конкретного метода доступа к данным. Затем ваши контроллеры ASP.NET MVC принимают этот интерфейс в качестве аргумента конструктора.

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