Я использую EF5 и имею сущности в классах POCO. Мой первый вопрос: где лучше всего реализовать бизнес-правила и проверку?
Мое первое предположение состоит в том, чтобы поместить его непосредственно в класс POCO в некоторую функцию Validate(), которая вызывается из DBContext при срабатывании SaveChanges(). Это работает хорошо, но некоторые правила требуют проверки для нескольких сущностей, как в этом примере для класса Invoice:
if(this.Items.Where(i=>i.Price > 100).Count() > 0)
{
//mark invoice for review
this.IsForReview = true;
}
Теперь модульные тесты будут проверять функцию проверки (для каждого бизнес-правила), но также должны будут заполнить класс счета-фактуры элементами (в противном случае он всегда будет пустым).
Другая идея состоит в том, чтобы создать класс InvoiceValidation с отдельными функциями проверки (или даже классом для каждого правила?), которые легче тестировать, но это увеличивает количество поддерживаемых файлов/классов.
Буду признателен за любые предложения или ссылки на существующие решения.