Где писать базу данных и бизнес-логику в MVC?

Поскольку я изучаю и работаю над приложением ASP.NET MVC, я хочу знать, что лучшее место для написания Business Logic и Data Access logic в MVC.

Где я должен писать DataAccess и Business Logic среди трех уровней (Model, View and Controller)??

Может кто-нибудь, пожалуйста, скажите мне правильный способ написать код для этого.

Сценарий: я хочу retrieve all the employees where employee name like 'Mi%' (у меня SQL procedure to execute and retrieve the data.)

PS: Хотите знать, где я должен создать экземпляр класса Business Logic и где я должен создать экземпляр класса слоев доступа к данным?

Спасибо заранее.

Ответы

Ответ 1

Бизнес-логика должна быть в Модели.

Доступ к данным может быть либо собственным, либо вашим вызовом контроллеров, либо автоматическим в ORM, который ваш контроллер вызовет через репозитории.

Прозрачное покрытие можно найти в Nerd Dinner, найдите скачать бесплатно.

Ответ 2

Бизнес-логика (BL) и доступ к данным (DAO) должны быть в отдельных слоях. Модели должны сохранять только данные и не содержать никакой логики. Контроллер должен получать данные только от просмотра и отправлять его на уровень BL (или отправлять из BL для просмотра).
Это не строгие правила, а самый последний использованный подход

Ответ 3

В представлении указывается код интерфейса.

Контроллер - это место, которое соединяет представление с моделью.

Модель хранит бизнес-логику и, возможно, доступ к базе данных. (Некоторые ORM-уровни могут использоваться также)

Ответ 4

Вы можете полностью пропустить трехуровневое мышление и пойти на другой способ мышления;

Действия пользователя; который отправляет команду или событие в фоновое обслуживание. Фоновая служба, которую вы можете запустить в процессе, для стартеров. Фоновая служба публикует события, опять же, в памяти. Вы создаете несколько мнений, которые подписывают событие из справочной службы. Каждый просмотр имеет событие "последний раз"; это целое число. Каждый из них запускает все последующие события из "глобального журнала".

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

Это эквивалент "сделать что-то, и я ожидаю увидеть это" изменение "в этом другом представлении". У вас также есть:

Взаимодействие - это когда у вас есть один или несколько событий из графического интерфейса или фоновой службы, и вы позволяете некоторым игрокам, скорее всего, Saga, выполните какое-либо действие, возможно, с компенсациями, основанными на других событиях, если действие не выполнено.

Кроме того, я рекомендую просматривать эту презентацию