Где лучше ставить ограничения?

Здравствуйте. Такой вопрос. Где лучше ставить ограничение для типов?
К примеру масса не должна превышать определенный размер. Это ограничение можно поставить несколькими способами:
1) в самой бд
2) на сущности:
class User
{
   private int years = 0;
   public int Years { 
      get { return years; };
      set { 
              if(value > 200 || value < 0)
              {
                   value = 0;
                   Logger.Instance.Warning(тут в лог записываем stacktrace места, где пыталось записать неверное значение);
              }
              years = value; 
            }
   }
}


3) на репозитории:
class UserRepository
{
   ...
   public void SetYears(User user, int years)
   {
      //код похожий как и во втором пункте.
   }
}
  • Вопрос задан
  • 131 просмотр
Решения вопроса 1
unitby
@unitby
Знать о себе и своем поведении должна сущность.
Ибо методы доступа могут быть разные и базу Вы можете мигрировать
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@dmitryKovalskiy
программист средней руки
На базе слишком поздно. Запрос, который априори будет отменен, проползет все круги ада и еще и обратится к базе. Это все ресурсы. Используйте клиентскую валидацию с подтверждением на сервере. К примеру на этапе создания модели.
Ну и небольшой P.S. - ваш код делает маленький сюрприз клиенту, его использующему. Без доступа к реализации я не узнаю почему я присвоил свойству значение 9000, а там все равно 0. Или бросайте исключение информируя о неверных данных или на уровне клиентской логики сообщите мне что я ввел хрень.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы