验证MVC5和EF6中的唯一值

时间:2015-04-13 08:23:29

标签: entity-framework model-view-controller unique

在我的MVC应用程序中,我要求用户在列中插入唯一值。

即:UsernameUsers表中应该是唯一的。

我在模型中使用了[Indes(IsUnique = true)]数据注释。

但是当我在字段中插入重复值时会抛出异常,但我想在我的视图上显示错误消息,说请尝试使用其他用户名

请帮帮我,我该怎么办?

1 个答案:

答案 0 :(得分:1)

您可以使用其中之一:

  1. 编写CustomValidator(推荐)

    [CustomRemoteValidator(ErrorMessage = @"Username already in use")]
    public string Username{ get; set; }`
    

    并覆盖IsValid方法

    public override bool IsValid(object value)
    {
        return !(this.DbContext.Set<User>().Any(a => 
            a.Username.Equals((string)value));
    }
    
  2. 在商家图层中查看。

  3. 通过覆盖SaveChanges()方法在数据库中保存实体之前检查它。