0

我有一个简单的问题,我的表中有两个字段,我需要在存储之前检查它们是否存在于数据库中。 在我的模型中

[Required]
[Display(Name = "Contract Type")]
public int tb_contract_type_id { get; set; } //This is drop-down box

[Required]
[Display(Name = "Domain Name")]
public string domain_name { get; set; } //this is text-box

这两个属性我需要在数据库中检查它们是否存在,如果它们不存在,那么我们只需要允许用户添加数据,否则不会。

我已经为下面的一个字段做了这个,现在我想检查两个字段,比如 db.contracts.Any(c => c.domain_name == URL && tb_contract_type_id == id)

从模型

 [CheckForDomain]
    [Required]
    [Display(Name = "Domain Name")]
    public string domain_name { get; set; }
...
public class CheckForDomain : ValidationAttribute
    {
        private DataContext db = new DataContext();
        protected override ValidationResult IsValid
          (object value, ValidationContext validationContext)
        {
            var URL = value.ToString();
            if (db.contracts.Any(c => c.domain_name == URL ))
            {
                return new ValidationResult("Domain Name already Exist!!");
            }
            else
            {
                return ValidationResult.Success;
            }
        }
    }

有什么好方法可以使用自定义验证来检查吗?我正在使用实体框架请建议..

4

1 回答 1

0

通过属性验证应该保持当前对象处于有效状态而不是整个域/业务逻辑,并且检查字段是否具有唯一值是业务规则而不是“对象规则”。(实例化这样的上下文也是一种不好的做法,无论它是在属性中还是在另一个日常类中。)

于 2013-04-14T12:55:21.360 回答