- 在 ASP.NET Core MVC 中使用 FluentValidation 库来验证电话号码和社会安全号码的唯一性。首先,在项目中安装 FluentValidation 库,并使用其 NuGet 包管理器控制台来执行以下命令:
Install-Package FluentValidation.AspNetCore
- 创建一个新的类来验证电话号码和社会安全号码的唯一性。以下是一个例子:
using FluentValidation;
using Microsoft.EntityFrameworkCore;
using System.Threading;
using System.Threading.Tasks;
public class UserValidator : AbstractValidator
{
private readonly ApplicationDbContext _dbContext;
public UserValidator(ApplicationDbContext dbContext)
{
_dbContext = dbContext;
RuleFor(x => x.PhoneNumber).MustAsync(BeUniquePhoneNumber).WithMessage("该电话号码已经被使用");
RuleFor(x => x.SSN).MustAsync(BeUniqueSSN).WithMessage("该社会安全号码已经被使用");
}
private async Task BeUniquePhoneNumber(User user, string phoneNumber, CancellationToken cancellationToken)
{
return await _dbContext.Users.AllAsync(x => x.Id == user.Id || x.PhoneNumber != phoneNumber, cancellationToken);
}
private async Task BeUniqueSSN(User user, string ssn, CancellationToken cancellationToken)
{
return await _dbContext.Users.AllAsync(x => x.Id == user.Id || x.SSN != ssn, cancellationToken);
}
}
- 在 Startup.cs 文件中配置 FluentValidation:
using FluentValidation.AspNetCore;
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddControllersWithViews()
.AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining());
}
- 在模型类中使用 UserValidator 来验证电话号码和社会安全号码的唯一性。例如:
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public string PhoneNumber { get; set; }
public string SSN { get