Я пытаюсь найти подходящий метод для проверки запросов POST и PUT.Я предложил 2 метода: «Validate ()» и «ValidateAsync ()».Я просто не уверен, какой использовать.
'Validate ()' , синхронный метод, возвращающий 'yield return', и с async.Result (без ожидания)Запросы в нем, которые, насколько я понимаю, аналогичны синхронным (если я не ошибаюсь и они асинхронны):
public IEnumerable<ValidationResult> Validate(Entity entity)
{
// ** NOTE: NO AWAIT AND USING '.RESULT' TO GET VALUE.**
var idExistsAsync = repo.ExistsAsync(e => e.Id == entity.Id).Result;
if (!idExistsAsync)
yield return new ValidationResult("Id does not exist");
// ** NOTE: NO AWAIT AND USING '.RESULT' TO GET VALUE.**
var userNameExistsAsync = repo.ExistsAsync(e => e.UserName == entity.UserName).Result;
if (!userNameExistsAsync)
yield return new ValidationResult("UserName does not exist");
}
- В приведенном выше примере, будет ли иметь значение, если я используюExistsAsync (). Результат или просто использование не асинхронной версии, Exsits ().
var idExists = repo.Exists(e => e.Id == entity.Id);
var userNameExists = repo.Exists(e => e.UserName == entity.UserName);
'ValidateAsync ()' , асинхронный метод, но без'yield return', добавление 'ошибок' в список и возвращение List ():
public async Task<IEnumerable<ValidationResult>> ValidateAsync(Entity entity)
{
var result = new List<ValidationResult>();
var idExistsAsync = await repo.ExistsAsync(e => e.Id == entity.Id);
if (!idExistsAsync)
result.Add(new ValidationResult("Id does not exist"));
var userNameExistsAsync = await repo.ExistsAsync(e => e.UserName == entity.UserName);
if (!userNameExistsAsync)
result.Add(new ValidationResult("UserName does not exist"));
return result;
}
Q: Каков наилучший подход?Validate () или ValidateAsync ()?Если Validate (), используя ExistsAsync (). Результат или Exists ()?
Спасибо.