@ Ладислав Мрнка прав, это зависит от вашей архитектуры.
Насколько сложны ваши бизнес-правила?Могут ли они часто меняться?Какие клиенты будут использовать вашу модель, только ваш собственный веб-сайт или вы выставляете API, OData и т. Д.?
На все вопросы, на которые необходимо ответить.
Лично у нас есть простые бизнес-правилаи довольно простая архитектура.
Поэтому я делаю все проверки на уровне обслуживания и создаю частичные классы для своих POCO, чтобы облегчить бизнес-правила и выдавать пользовательские исключения.
Например
public void Add(Order order)
{
try
{
order.Validate(); // method in Order.cs partial class
repository.Add(order);
}
catch (InvalidOrderOperationException exc) // custom exc
{
// do something
}
}
Как я уже сказал - зависит от вашей архитектуры.
Если у вас очень сложные бизнес-правила, рассмотрите возможность использования шаблона спецификации.
«Бог DDD»У (Мартина Фаулера) есть хорошая статья здесь .