0

我正在研究 MVC3 和 Entity Framework 4.1,我有业务层和数据访问层。

由于我有很多用于业务验证的业务逻辑,我从业务层调用数据访问层并进行验证 b/ci 需要验证来自数据库的数据。

因此,为了进行我的交易,我经历了很多条件,所有条件都在一种方法中(数据库验证的 b/c 我的验证代码也在 DAL 中)我尽可能多地重构了代码,但该方法仍然看起来很大,大约 160线。

谁能告诉我最好的方法应该是什么,所以我的代码将易于管理和扩展。

谢谢

4

1 回答 1

1

我建议使用自定义验证。

当您认为您更喜欢可维护性而不是速度时(通常是一个好主意):不应直接从 UI 层访问数据。您的业​​务层应该包含您的所有业务逻辑,您的验证器应该调用您的业务层。注意这些抽象层,你是在用速度换可维护性(如果你问我,这很值得交易)

这是一个可以让您从这里开始的片段:在 MVC 3 中创建自定义数据注释验证

public class EmployeeViewModel
{

    [CustomValidation(typeof(EmployeeViewModel), "ValidateDuplicate")]
    [Required(ErrorMessage = "Username is required")]
    [DisplayName("Username")]
    public string Username { get; set; }

    public static ValidationResult ValidateDuplicate(string username)
    {
      bool isValid;

      using(var db = new YourContextName) {
        if(db.EmployeeViewModel.Where(e => e.Username.Equals(username)).Count() > 0)
       {
          isValid = false;
       } else {
          isValid = true;
       }
      }

      if (isValid)
      {
        return ValidationResult.Success;
      }
      else
      {
        return new ValidationResult("Username already exists");
      }

    }
}
于 2013-04-26T18:37:28.407 回答