如何使用 ASP.NET Core 3.1 MVC 和 EF Core 对唯一字段使用数据验证注释?
How do use data validation annotation for unique fields with ASP.NET Core 3.1 MVC and EF Core?
该解决方案有一个数据实体项目和一个使用 EF Core 的 ASP.NET Core 3.1 MVC 项目。
在数据实体项目中,有一个域class:
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 重复数据异常并向用户显示适当的消息。
该解决方案有一个数据实体项目和一个使用 EF Core 的 ASP.NET Core 3.1 MVC 项目。
在数据实体项目中,有一个域class:
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 重复数据异常并向用户显示适当的消息。