2013-10-29 3 views
4

솔루션을 여러 프로젝트로 나눌 때 여러 데이터 컨텍스트가 있거나 컨텍스트를 공유하는 것이 합리적입니까?여러 데이터 컨텍스트를 갖는 것이 좋습니다.

예, 웹 포털, 당신은 :

App.Service1 
App.Service2 
App.Web (references Service1 and Service2) 

이제이 서비스 1와 서비스 2가 같은 DataContext를 공유하거나 각각 자신이되도록 할 것이다

?

Service1Service2은 둘 다 똑같은 데이터베이스에 연결되어 있으며, 더 고립 된 상태로 유지하기 위해 분리되어 있습니다.

저는 EF6을 사용하고 있습니다.

답변

3

동일한 컨텍스트를 공유하는 것이 좋습니다. 여러 컨텍스트는 다른 데이터베이스의 데이터를 집계 할 때 의미가 있습니다.

+0

공유하려면 서비스 컨스트럭터 또는 속성에 대한 컨텍스트를 전달하거나 IOC를 사용하고 수정해야합니다. 그렇다면 컨텍스트가 구성 설정을 가지고 있음을 의미하지는 않습니까? 그들이 서로 다른 프로젝트에 있다면, 어떻게 작동할까요? – loyalflow

+0

컨텍스트를 인스턴스화하려면 web.config 파일에 저장 될 연결 문자열 만 있으면됩니다. 기본적으로 DAL 계층에 컨텍스트를 주입하는 것은 DI 프레임 워크의 작업입니다. –

+0

DbContext에서 상속받은 클래스에서 먼저 컨텍스트가 처리 할 모든 엔터티를 설정해야한다고 생각했습니다. 즉, 각 서비스에 컨텍스트를 전달해야 함을 의미하지만, 해당 컨텍스트는 모든 엔티티/모델을 인식해야합니다. – loyalflow

0

저는 개인적으로 동일한 데이터베이스에 대해 두 개의 데이터 컨텍스트를 사용하지 않습니다. 사물을 격리하는 당신의 아이디어를 보았습니다.하지만 EF는 이런 식으로하지 않기에 충분히 강력하다고 생각합니다. @Darin은 다른 데이터베이스에 대해 두 가지 컨텍스트를 사용합니다.

1

나는,이 컨텍스트는 동일한 데이터베이스

에 사는 경우에 분리가 우려하고 설계가 가능하게되는 경우가 마이그레이션 또는 스키마 변경 감지와 혼동하기위한 엔티티 프레임 워크를 중지 중심으로 하나의 컨텍스트를 사용합니다 나는 컨텍스트가 Service1과 Service2의 논리적 인 분할 인 두 개의 인터페이스를 구현하고 코드 전체에서 인터페이스를 사용하도록 만들 것이다.

그것은 또한 당신이 탐색 속성에 관해서 크로스 컨텍스트 관계를 가질 수 없습니다 수 있지만 일반적으로

1

나는 하나의 컨텍스트를 사용하도록 recomment 것이다 즉 귀하의 경우 문제 같은 소리하지 않는 주목할 가치가있다 단순성, 이지만 인 경우 데이터 모델 (컨텍스트)이 두 개 이상의 컨텍스트를 사용하는 경우 더 나은 성능을 제공하는 것보다 매우 큽니다. 그러나 엔티티가 관계가없는 경우에만 의미가 있습니다. 그리고 많은 문맥을 다루기가 어려울 수 있습니다.

관련 문제