Bastien Vandamme Ответов: 1

Где внедрять бизнес-правила?


Привет,

Я создаю веб-API с помощью entity framework. У меня есть несколько вопросов о проверке бизнеса.

Мое решение содержит несколько проектов. Один для моих сущностей и Dto (объект передачи данных). Один для моего DbContext с кодом first и репозиторием. Один для моего API. Один для моих деловых услуг. Я уже реализовал классическую проверку в своих сущностях с помощью DataAnnotations. А как насчет бизнес-правил? Бизнес-правила - это все те правила, которые я должен проверить, которые заставляют меня идти в базу данных или делать различные циклы в системе.

Мой бизнес-уровень должен реализовать все эти правила. Я не могу создать эти правила в своих сущностях или DTO, потому что мне нужно ссылаться на свою базу данных или другие системы.

В данный момент мои бизнес-сервисы - это своего рода класс CRUD, который выполняет всю работу по созданию, отображению моих сущностей. Где я должен реализовать валидацию?

Что я уже пробовал:

Я уже пытался реализовать IValidatableObject

public class ItemService : Service, ICrudService<item>, IValidatableObject
{

}


Но мой бизнес-класс не является сущностью. Кажется не логичным использовать этот IValidatableObject в бизнес-классе.

1 Ответов

Рейтинг:
4

Bastien Vandamme

Я думаю, что буду использовать методы расширения для создания всех моих правил проверки, чтобы заманить систему

public static class ItemBusinessRules
    {
        public static Notification ValidateDescription(this Item item, ItemService itemService)
        {
            return (item.Description.CompareTo(itemService.GenerateDescription(item)) != 0)
        }
    }