我正在研究MVC3和Entity Framework 4.1,我有业务层和数据访问层。
由于我有很多业务逻辑用于业务验证,我从业务层调用数据访问层并进行验证b / c我需要验证数据库中的数据。
因此,为了进行我的交易,我正在经历许多条件,并且所有条件都在一个方法中(数据库验证的b / c我的验证代码也在DAL中)我尽可能地重构代码但是这个方法仍在寻找大约160线。
任何人都可以告诉我最佳方法应该是什么,因此我的代码将易于管理和扩展。
由于
答案 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");
}
}
}