C#自定义验证唯一属性 - 泛型类

时间:2015-08-23 22:25:41

标签: c# .net entity-framework validation data-annotations

我正在尝试进行自定义验证[IsUnique]。检查属性值是否唯一并返回正确的消息。

这是我的代码,但这只适用于指定的类,是否可以通过元数据来获取正确的类?

if (sum < 0)

我的自定义验证:

public class ArticleMetaData
    {
        [Required(AllowEmptyStrings = false)]
        [IsUnique("Name")]
        public String Name{ get; set; }      
    }

这个想法只是使用注释[isUnique],方法将带有注释的类,并搜索相应的实体。

2 个答案:

答案 0 :(得分:1)

我认为最好的方法是让数据库完成它的工作。

在数据库中创建约束以防止两篇文章具有相同的名称(或者您需要的任何唯一性)。然后,当用户创建新文章或使用现有文章名称更新现有文章时,数据库将引发异常。抓住该异常,让用户知道这个问题。

答案 1 :(得分:0)

如果有通用属性会很好,但是不支持这些属性。但是,您可以尝试使用Set的{​​{1}}方法,该方法将实体类型作为参数。要查询非通用DbContext,您可以使用DbSet库(可以从NuGet添加它)。它允许使用字符串谓词查询System.Linq.Dynamic。这是一个例子:

DbSet