2017-01-08 1 views
0

컨트롤러에 비즈니스 로직 클래스를 분리하여 컨트롤러에 가능한 적은 비즈니스 로직이 포함되도록했습니다. 그러나 웹 요청의 수명과 동일한 dbcontext througout를 사용하고 컨텍스트 라이브를 사용하여 entite를 전달하려면 비즈니스 로직 클래스에 dbcontext를 전달하고 해당 클래스의 거의 모든 메소드가 허용됩니다. dbcontext를 매개 변수로 사용합니다. (컨텍스트가 다른 경우 동일한 엔터티를 생성하도록 데이터베이스를 쿼리해야합니다.)dbcontext 재사용

이 방법에 문제가 있습니까? (동일한 컨텍스트를 사용하여 각 비즈니스 로직 메소드의 매개 변수로 받아들이는 것과 관련하여)

+0

데이터 액세스 계층은 모든 DB 특정 논리를 처리하는 것이 더 좋으며 Business Logic은 컨텍스트 e.t.c와 같은 DB 특정 세부 사항을 알지 않아야합니다. 컨텍스트 수명은 IoC 컨테이너 (단일 요청 또는 단일 요청)를 통해 컨텍스트 인스턴스 하나를 제어하는 ​​것이 좋습니다. – Vladimir

답변

0

프로젝트에 리포지토리 및 작업 단위 디자인 패턴을 구현해야한다고 생각합니다.

저장소와 작업 패턴의 단위는 당신은 비즈니스 로직의 분리를 모든 준비를 완료했습니다

데이터 액세스 레이어와 애플리케이션의 비즈니스 로직 계층 사이의 추상화 계층을 생성하기위한 것입니다 레이어 및 데이터 액세스 레이어. 이제 dbcontext 공유를 위해 작업 단위 패턴을 사용해야합니다.

작업 클래스의 단위는

이 구현 here 대해 자세히 알아 그들 모두가 공유하는 하나의 데이터베이스 컨텍스트 클래스를 생성하여 여러 저장소의 작업을 조정합니다.

+0

내 대답을 확인 했습니까? –