2017-01-23 8 views
0

3 개의 프로젝트 (C#) API, BLL 및 DAL이 있습니다. DAL은 DAL을 참조하고 API는 BLL을 참조합니다. 내 API에서 내 API에서 DAL 참조없이 BLL 함수 사용

enter image description here

enter image description here

나는 모든 CRUD 기능을 사용할 필요하지만 VS는 "유형"blabla "는에 정의되어 있다고 말했다 때문에 나는 내 BLL에서 기능을 사용할 수 없습니다 참조 (DAL)을 추가해야하지만 "API 프로젝트에서 DAL을 참조하고 싶지 않습니다. DAL 프로젝트를 사용하지 않고이 작업을 수행 할 수있는 방법이 있습니까?

+2

BLL이 의존하는 경우 DAL을 기본 프로젝트에 참조해야합니다. 그렇지 않으면 BLL이 어떻게 호출 기능을 찾습니까? 컴파일 된 DAL 코드가 누락되었습니다. 그것이 작동하는 방식 일 뿐이며 걱정할 필요가 없습니다. – ADyson

+0

하지만 BLL은 DAL을 사용해야합니다. – McNets

+0

@ADyson 내 BLL 프로젝트에서 DAL을 사용하지만 왜 BLL을 참조하면 API에서 DAL에 대한 참조를 추가할까요? –

답변

1

제 생각에 달성하려는 것은 프로젝트를 설계하는 좋은 방법입니다. 나는 또한 동일을하고있다; 아래에 제가 설명 할 작은 차이점이 있습니다. API에서 DAL을 참조하지 않으면 DAL에 대한 모든 호출이 BLL을 통해서만 수행됩니다. 모든 데이터 처리 로직을 한 곳에서 처리하기 때문에이 작업이 필요합니다. 배포 된 경우 문제점을 찾기가 어렵습니다. (당신을 [참조 아무것도]

  • DAL은 (데이터베이스 물건을 간다) 참조의 Utils]
  • BLL을 (당신의 "blabla"물건을 여기에 간다)

    1. 의 Utils :

      나는 네 개의 프로젝트가 논리 물건) 여기에 [필요한 경우 참조 BLL와의 Utils] [참조 DAL과의 Utils 필요한 경우]

    2. API를 (당신의 API 물건은 간다) 간다

    이것은 편도 참조 체인입니다. DAL => BLL => API. 역순으로 참조가 존재해서는 안됩니다. Utils은 엔티티 선언, 예외, 열거 형과 같은 일반적인 항목이 있어야하는 공통 항목이어야합니다.

    참고 : API에서 DAL을 참조하지 않아도 배포해야합니다.

    API에서 Utils을 사용하지 않으려면 DTO 레이어를 하나 더 추가하고 엔터티로 매핑해야 할 수 있습니다. 내 다른 question 같은 것을 참조하십시오.