Правильный подход к проверке данных

У меня есть класс сотрудника в моем заявлении. Конструктор для класса принимает идентификатор сотрудника. То, как я пытаюсь проверить, действителен ли идентификатор сотрудника, выглядит примерно так

Employee emp = new Employee("E11234");
if (emp.IsValid())
{
    // do whatever is required
}
else
{
    // show an error message
}

В конструкторе я пытаюсь получить доступ к базе данных, и если я могу получить записи, я заполняю значения для закрытых членов, в противном случае, если записей не существует, я устанавливаю для свойства isValid значение false.

Это правильный способ достижения того, чего я хочу, или есть лучший метод?

1 ответ

Решение

Вы должны отделить доступ к базе данных от вашего класса сущности (Сотрудник). Одним из вариантов разделения является использование шаблона репозитория для загрузки и сохранения сотрудника. Хранилище отвечает за доступ к вашей базе данных, и сотруднику не нужно беспокоиться о том, откуда она взялась или где вы собираетесь ее хранить.

Есть много хороших учебных пособий по использованию репозитория, и здесь, в Stackru, у нас есть хороший вопрос по этой теме. При использовании репозитория ваш код будет выглядеть примерно так:

Employee emp = EmployeeRepository.GetById("E11234");
if (emp.IsValid())
{ 
   do whatever is required 
}
else {     
  // show an error message
}

Что касается проверки, ваш класс сотрудников также не должен попадать в базу данных. Вы можете создать класс EmployeeValidator с помощью метода Validate, который затем выполняет всю необходимую проверку.

Мой лучший совет - старайтесь держать свои объекты подальше от своей инфраструктуры.

Другие вопросы по тегам