Как я могу проверить, что сам объект существует до выполнения обновления или удаления?
Я попытался использовать что-то вроде кода ниже, но получаю сообщение об ошибке "Имя свойства должно быть указано". Как реализовать такую логику?
public CustomValidator()
{
RuleFor(x=>x).Must(ExistsInDatabase).WithMessage("Attempt to work with nonexistent entity");
}
private bool ExistsInDatabase(MyClass myClassInstance)
{
if (myClassInstance == null)
return false;
return true;
}
UPDATE: вопрос касается синтаксиса в RuleFor() - можно ли использовать (x => x) без указания конкретного свойства? или каким-либо другим способом проверить состояние всего объекта, который будет проверен?
Я считаю, что вам нужно будет написать больше функциональности в свой класс ExistsInDatabase, чтобы он мог выполнять поиск в базе данных, чтобы определить, существует ли сущность, которая имеет тот же первичный ключ.
Если вы используете Entity Framework, вы можете использовать generics в классе ExistsInDatabase, чтобы он мог вызвать ваш контекст. Вы можете добавить простого помощника в свой контекстный класс, что-то в этом направлении
public virtual IDbSet<T> DbSet<T>() where T : class
{
return this.Set<T>();
}
Когда у вас есть набор, вы можете использовать метод поиска EF, который будет искать на основе первичного ключа. Что-то вроде этого, например
var result = context.DbSet<Business>().Find(1);
return result == null ? false : true;