通過流暢的驗證,您可以在更新密碼之前驗證諸如NotNull,numberGreaterThan或更高級的業務規則(如userMustExistsOnDb)之類的簡單內容。您是否使用流暢的數據庫調用驗證
我覺得當我使用流利的驗證我做雙倍數據庫調用比當我不是使用它。這是一個例子。
public class DeleteCustomerRequestValidator: AbstractValidator<DeleteCustomerRequest> {
public DeleteCUstomerRequestValidator() {
RuleFor(customer => customer.Id).GreaterThan(0);
RuleFor(customer => customer.Id).Must(ExistsOnDB).WithMessage("The customer does not exists");
}
private bool ExistsOnDB(int customerId) {
// DB call to check if exists on Db
return Respository.Customers.Any(x => x.Id == customerId) // CALL NUMBER 1
}
}
這裏的刪除方法在那裏我做了第二個電話
public void DeleteCustomer(int customerId)
{
Customer customer = Repository.Customers.First(x => x.Id); // CALL NUMBER 2
Repository.Customers.Delete(customer)
Repository.Save()
}
但是如果我沒有用流利的驗證我會做只有一個調用擺脫DB客戶。
public void DeleteCustomer(int customerId)
{
if (customerId < 1)
{
/// Return error.
}
Customer customer = Repository.Customers.FirstOrDefault(x => x.Id); // Only 1 CALL
if (customer == null)
{
// Return error.
}
Repository.Customers.Delete(customer)
Repository.Save()
}
我做錯了什麼?有沒有更好的方法來做到這一點?
謝謝你的時間。
打開SQL Server分析器並查看哪些調用正在觸發db – reggaeguitar