Правильный подход к проверке данных
У меня есть класс сотрудника в моем заявлении. Конструктор для класса принимает идентификатор сотрудника. То, как я пытаюсь проверить, действителен ли идентификатор сотрудника, выглядит примерно так
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, который затем выполняет всю необходимую проверку.
Мой лучший совет - старайтесь держать свои объекты подальше от своей инфраструктуры.