业务逻辑实现的最佳实践

时间:2013-04-26 18:19:07

标签: c#-4.0 entity-framework-4

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

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

因此,为了进行我的交易,我正在经历许多条件,并且所有条件都在一个方法中(数据库验证的b / c我的验证代码也在DAL中)我尽可能地重构代码但是这个方法仍在寻找大约160线。

任何人都可以告诉我最佳方法应该是什么,因此我的代码将易于管理和扩展。

由于

1 个答案:

答案 0 :(得分:1)

我建议使用自定义验证。

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

以下是一段摘录,可以帮助您从这里开始:Creating custom data annotation validation in 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");
      }

    }
}