微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何对 ASP.NET Core 3.1 MVC 和 EF Core 的唯一字段使用数据验证注释?

如何解决如何对 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。在网络项目中。

解决方法

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。