C# FluentValidation使用DB检查重复值
我试图确保用户输入的名称不能与数据库中的名称相同 如何使用Fluent验证来实现这一点 我试过了,但还是出了一些差错 这是我当前的代码:C# FluentValidation使用DB检查重复值,c#,asp.net,asp.net-core,razor-pages,fluentvalidation,C#,Asp.net,Asp.net Core,Razor Pages,Fluentvalidation,我试图确保用户输入的名称不能与数据库中的名称相同 如何使用Fluent验证来实现这一点 我试过了,但还是出了一些差错 这是我当前的代码: RuleFor (x => x.Name) .NotEmpty().WithMessage("The name cannot be empty!"); (用户)数据库的示例如下: 姓名、年龄 名称不应重复。在引用的链接中,它们提供了合适的解决方案。但是,我建议您使用设计模式(如存储库模式)和原则(如依赖项注入)。执行所需验证(无重复名称)的一种方法是:
RuleFor
(x => x.Name)
.NotEmpty().WithMessage("The name cannot be empty!");
(用户)数据库的示例如下:
姓名、年龄
名称不应重复。在引用的链接中,它们提供了合适的解决方案。但是,我建议您使用设计模式(如存储库模式)和原则(如依赖项注入)。执行所需验证(无重复名称)的一种方法是:
public interface IMyClassToValidateRepository {
Task<IList<MyClassToValidate>> GetDataAsync();
}
您的错误是什么?@fatemimirjalili我得到的错误来自这行var business=new RoleGroupBusiness();由于我不确定代码背后的内容,我无法继续。此行是一个表名,用于检查重复项。您可以使用您的
上下文.tableName
,然后对其使用where
。
public class MyClassToValidateValidator : AbstractValidator<MyClassToValidate> {
public MyClassToValidateValidator(IMyClassToValidateRepository repository) {
RuleFor(x => x.Name)
.MustAsync(async (name, ct) =>
(await repository.GetDataAsync()).All(x => x.Name != name));
}
}
public class MyClassToValidate {
public string Name { get; set; }
}