c# - 如何使用 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 异常并向用户显示适当的消息。
推荐阅读
- jquery - 开玩笑:TypeError:$(...).modal 不是函数
- javascript - 获取数据后解构数据导致错误
- python-3.x - 尝试初始化数据框列时,多处理代码不起作用
- plot - 从表中绘制 pyspark
- python - 如何将灰度图像的张量转换为三通道图像?
- javascript - 可以返回不在数据库中的记录吗?猫鼬
- java - 禁用某些应用的画中画模式
- django - 在不使用 raw 的情况下聚合联合查询的结果
- r - 在 R 中使用带有 replace_na 的 if 语句,出现意外的符号错误
- java - Jboss 6.4 服务器正常工作,而 7.1 不工作