我正在尝试使用fluentvalidation验证图钉,以确保哪种用户类型与现有图钉匹配。 AppDbContext是从dbcontext(实体框架)继承的上下文类。调用isOldPin方法时出现此语法错误。如果PinCodeOld数据类型为字符串,则不会出现此错误。但是,如果PinCodeOld数据类型很长,则会出现此错误。
public class ChangePinValidator : AbstractValidator<VMPinChange>
{
private readonly AppDbContext db = new AppDbContext();
public ChangePinValidator()
{
RuleFor(b => b.PinCodeOld).Must(isOldPin).WithMessage("Invalid current pin code.");
RuleFor(b => b.PinCodeNew).Equal(b => b.PinCodeConfirmation)
.WithMessage("New pin code is not same with confirmed new pin code.");
}
private bool isOldPin(string _currentPin)
{
bool isMatch = db.BankAccounts.Any(b => b.PinCode.Equals(_currentPin));
return isMatch;
}
}
答案 0 :(得分:1)
问题是这样的:
RuleFor(b => b.PinCodeOld).Must(isOldPin)
如果PinCodeOld
很长,则Must
方法将期望采用long
值作为输入,但是您的方法采用string
的方法。如果您需要将其设置为long
,则还需要将isOldPin
更改为long
。