首页 > 解决方案 > 如何使用 ASP.NET Core 3.1 MVC 和 EF Core 对唯一字段使用数据验证注释?

问题描述

该解决方案有一个数据实体项目和一个使用 EF Core 的 ASP.NET Core 3.1 MVC 项目。

在数据实体项目中,有一个领域类:

public class BoatMaker
{
     [Key]
     public int Id { get; set; }

     [Required]
     public string Name {get; set;}
}

我希望能够像这样装饰它:

  [Required]
  [Unique]
  public string Name {get; set;}

如果名称已经在数据库中,则模型将无效,并且在视图中的数据验证中自动填充验证错误消息以达到该效果。

如何做到这一点?可以做到吗?

该项目使用存储库模型,注入控制器。DbContext 是 obvs。在网络项目中。

标签: c#asp.net-coreentity-framework-coreasp.net-core-mvcdata-annotations

解决方案


我认为不能在应用程序端完成,因为它应该检查数据库。您可以使用它Unique Index来防止重复数据。

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<BoatMaker>()
      .HasIndex(x => x.Name)
      .IsUnique();
}

您可以处理重复数据的 sql 异常并向用户显示适当的消息。


推荐阅读