2010-12-30 4 views
2

여러 프로젝트가있는 Visual Studio 솔루션이 있습니다.모델 및 리포지토리를 별도의 프로젝트에 보관하십시오.

프로젝트 구조와 이점에 대해 100 % 합의하지 못했습니다.

예 : DOMAIN이라는 프로젝트가 있습니다. 여기에 몇 개의 폴더가 있습니다 :

DOMAIN 
| 
|_Repository 
    |__Implementations 
    |____|__OrderRepository.cs 
    |____|__CustomerRepository.cs 
    |__Contracts 
    |____|__IOrderRepository.cs 
    |____|__ICustomerRepository.cs 
    SessionManager.cs 
    Model 
    |__Customer.cs 
    |__Order.cs 

질문 : 여분의 프로젝트에서 모델을 저장소와 분리해야합니까?

'예'인 경우 왜?

답변

3

응용 프로그램이 저장소에 대해 불가지론적인 대응을 시도한다면 그렇습니다. 이를 수행하는 한 가지 방법은 모델에 추상 클래스 또는 인터페이스와 같은 리포지토리에 대한 추상화를 포함시키는 것입니다. 그런 다음 데이터 액세스 레이어 (DAL)와 같은 호출 할 수있는 별도의 프로젝트가 있고 모델 프로젝트에 대한 참조를 보유하고 추상 리포지토리를 구현합니다.

이점은 프로젝트 (예 : 모델 프로젝트가 비즈니스 로직을 구현하고 DAL 프로젝트가 데이터를 가져 오는 방법에 대한 세부 정보를 알고 있음) 사이의 책임을 명확하게 구분할 수 있다는 것입니다. 또한, 이렇게하면 두 개의 다른 DAL을 구현할 수 있습니다. 하나는 SQLServer를 대상으로하고 다른 하나는 SqlLite를 대상으로 지정하는 것입니다.

+0

매우 비슷한 것을 게시 할 예정이었습니다. +1 – tQuarella

+0

저는 그냥 프로젝트를 SQLite 용 DAL로 바꿀 수 있었고 sqlserverdal을 사용할 수있었습니다. 따라서 모든 해결책을 찾았지만, Entity Framework와 같은 ORM 도구를 사용하면 조언을 제대로 이해할 수 없습니까? 나는 LINQ-Provider를 통해 컨텍스트를 쿼리하고 이것은 sqlite/sqlserver/mysql 등일 수있다. – Elisabeth

+0

argh ... 나는 중요한 오자가있다. 나는 이미 2 개의 프로젝트가 있지만 DAL은 구현 + 계약을 가지고있다. 모델에 엔티티가있다. ... 학습 효과는 좋아. 나는 임 플렉스를 유지하고 싶지만 인터페이스를 MODEL로 옮긴다. + 어떻게 든 함께 계약한다 ;-) – Elisabeth