3
나는 다음과 같은 층

C# 응용 프로그램

이있는 응용 프로그램을 구축하고

내 FluentValidation를 사용하는 방법

데이터 - 엔티티 프레임 워크 컨텍스트 엔티티 -로드/기업에게 WebApi을 저장 WebApi에 의해 호출 - 엔티티 프레임 워크 POCO이 서비스 객체 -

이제 엔티티에 대한 서비스가 있으므로 서비스 계층에 비즈니스 로직을 넣어야한다고 생각합니다. 예를 들어 Family 개체와 Family Service가 있습니다.

FluentValidation을 사용하여 유효성 검사 개체를 만들려면 내 서비스가 이미 해당 개체에서 상속받을 수 있으므로 AbstractValidator에서 상속해야합니다.

내 유일한 옵션은 서비스 계층에 FamilyValidator를 만들고이 유효성 검사기를 서비스 내에서 호출하는 것입니다.

fluentValidation이 최선의 선택입니까, 아니면 혼란스러운 부분입니까? 당신이 고객이라는 기업이있는 경우 이에 대한 검증 작성하는 방법

+0

을, 당신은 당신이, 추상적 인 발리에서 서비스 클래스 상속을하지 않습니다 서비스가 사용하는 독립 실행 형 검사기 클래스. –

+0

"가족"은 귀하가 확인하고자하는 귀하의 법인체입니까? 이 경우에 엔티티가 abstractValidator에서 상속 할 필요는 없지만 AbstarctValidator에서 상속 한 유효성 검사기 클래스를 만들어야하며 유효성 검사기는 Family 매개 변수를 AbstractValidator의 제네릭 매개 변수로 전달합니다. –

+0

이 예제를 확인하십시오. tbat 고객 엔티티 유효성 검사 https://fluentvalidation.codeplex.com –

답변

8

은 이것이다 : 나는 당신이 혼란 것을 생각

public class CustomerValidator: AbstractValidator<Customer> { 
    public CustomerValidator() { 
    RuleFor(customer => customer.Surname).NotEmpty(); 
    RuleFor(customer => customer.Forename).NotEmpty().WithMessage("Please specify a first name"); 
    RuleFor(customer => customer.Discount).NotEqual(0).When(customer => customer.HasDiscount); 
    RuleFor(customer => customer.Address).Length(20, 250); 
    RuleFor(customer => customer.Postcode).Must(BeAValidPostcode).WithMessage("Please specify a valid postcode"); 
    } 

    private bool BeAValidPostcode(string postcode) { 
    // custom postcode validating logic goes here 
    } 
} 

Customer customer = new Customer(); 
CustomerValidator validator = new CustomerValidator(); 
ValidationResult results = validator.Validate(customer); 

bool validationSucceeded = results.IsValid; 
IList<ValidationFailure> failures = results.Errors;