.Net에서 N 계층 아키텍처를 구현하고 있으며, Entity 레이어, DAL 레이어, 비즈니스 레이어 및 UI 레이어로 구성되어 있습니다..Net - Cross Referencing 레이어의 N 계층 아키텍처 프로젝트 구조
기본 필드 외에도 엔티티에는 탐색 속성이 있습니다. 예를 들어 Invoice 엔터티가있을 것입니다. InvoiceLines 속성은 부모 Invoice 엔터티와 연결된 모든 InvoiceLine 엔터티를 반환해야합니다.
일단 InvoiceLines에 영구적 인 매체에서 검색된 코드를 복제하고 싶지 않은 비즈니스 논리가 있기 때문에 Invoice 엔터티의 InvoiceLines 속성은 호출을 통해 자체 채워집니다 IEnumerable을 반환하는 비즈니스 논리 내의 GetInvoiceLinesByInvoiceID 메서드에 전달합니다.
내 문제는 이것입니다. 엔티티 프로젝트가 비즈니스 프로젝트에 의존하고 비즈니스 프로젝트가 엔티티 프로젝트에 종속되어 상호 참조를 도입하므로 레이어를 별도의 프로젝트로 분리 할 수 없습니다. 현재 3 개의 레이어 (엔티티, DAL 및 비즈니스)가 모두 동일한 프로젝트에 있으므로 제대로 작동하지만 다른 솔루션 중에서 엔티티 만 공유 할 수는 없습니다.
이 방법으로 레이어를 상호 참조하면 일부 원칙을 위반하는 것으로 알고 있지만 비즈니스 로직이 적용된 내 엔터티에 탐색 속성이 채워지는 것이 매우 편리합니다.
아무도 나에게 별도의 프로젝트에 내 레이어를 유지하면서 더 나은 접근 방식을 제안하거나이 방법을 사용할 수 있습니까?
건배
명확성을 위해 엔티티 계층을 SQLCLR 프로젝트와 공유해야합니다. 엔티티, DAL 및 비즈니스를 포함하는 전체 "레이어"프로젝트에는 SQLCLR에서 지원하지 않는 참조 된 어셈블리가 포함되어 있으므로 전체 어셈블리. – Hoodlum