일련의 규칙에 따라 업데이트해야하는 필드가있는 간단한 Entity Framework 지원 도메인 오브젝트가있는 시스템을 설계 중입니다.이를 구현하고 싶습니다. 규칙은 점진적으로 (민첩한 스타일로), EF를 사용할 때 각 규칙을 도메인 객체에 넣는 것에 대해 회의적입니다. 그러나 "절차 코드"를 작성하고 빈혈 도메인 모델을 사용하는 것을 피하고 싶습니다. 이 모든 것도 테스트 할 수 있어야합니다. 예를 들어비즈니스 로직을 규칙의 형태로 사용하여 빈혈 도메인 모델을 피하는 방법
는, 객체는 다음과 같습니다
class Employee {
private string Name;
private float Salary;
private float PensionPot;
private bool _pension;
private bool _eligibleForPension;
}
내가 같은 규칙을 구축 할 필요가 "급여보다 높은 10 만이고 _eligibleForPension는 경우는 false 다음 _eligibleForPension 설정 참으로"_pension는 다음에 해당하는 경우 "와 _eligibleForPension을 true로 설정하십시오. "
약 20 개의 규칙이 있으며 Employee 클래스 또는 EmployeeRules 클래스와 같은 구현 여부에 대한 조언이 필요합니다. 내 첫 번째 생각은 각 규칙에 대해 "Rule"을 상속 한 별도의 클래스를 만든 다음 Employee 클래스에 각 규칙을 적용하는 것이 었습니다. 방문자 패턴을 사용했지만 모든 필드를 규칙에 적용해야합니다. 잘못된 생각. 각 규칙을 Employee 클래스에 두는 것도 괜찮은 것 같지 않습니다. 이것이 어떻게 구현 될까요?
둘째 관심사는 실제 Employees가 DB에 백업 된 Entity Framework 엔터티이므로 이러한 "Entities"에 논리를 추가하는 것이 행복하지 않다는 것입니다. 특히 각 규칙을 단위 테스트하기 위해 개체를 조롱해야하는 경우 더욱 그렇습니다. 동일한 객체에 대해 테스트 할 규칙이 있다면 어떻게 조롱 할 수 있습니까?
나는 AutoMapper를 사용하여 규칙을 적용하기 전에 좀 더 간단한 도메인 개체로 변환하려고했지만 이후 필드에 대한 업데이트를 직접 관리해야합니다. 이것에 대한 조언도 있나?
도움이 될 것이다 장난. 내 원하는 디자인 인 private 필드를 예로 들었지만 EF는 public 속성을 가지고 있으므로 Employees 클래스에 직접 액세스하면 내부 클래스를 사용할 필요가 없습니다. 누군가가 EF 부품을 포함하여 질문에 대답 할 수 있기를 희망하며 질문을 공개적으로 남겨 둘 것입니다. 감사! – PCurd
약간 수정 된 접근법을 사용하여 시스템의 데모 모델을 만들었습니다. 내부 클래스로는 규칙이 없으며 작동하고 잘 느낍니다. 나는이 시스템에 대해 공개 된 필드가 끔찍한 범죄가 아니라는 것을 안다.하지만 내면의 수업을 통해 다시 시도해 볼 수도있다. 당신의 도움을 주셔서 감사합니다. – PCurd