【问题标题】:Best practice of business logic implementation [closed]业务逻辑实现的最佳实践 [关闭]
【发布时间】:2013-04-27 02:37:28
【问题描述】:

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

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

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

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

谢谢

【问题讨论】:

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


    【解决方案1】:

    我建议使用自定义验证。

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

    这是一个可以让你从这里开始的 sn-p: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");
          }
    
        }
    }
    

    【讨论】:

    • 问题是代码不仅仅从控制器调用,它也从 WCF 服务调用,所以我不能按照你的建议做。
    • 等待回复....
    • 这可能会有所帮助:forums.asp.net/t/…
    猜你喜欢
    • 2021-06-21
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-24
    • 1970-01-01
    • 2011-07-01
    相关资源
    最近更新 更多