기존 응용 프로그램의 새로운 아키텍처를 위해이 모든 것을 통합하려고합니다. 기존 응용 프로그램에는 많은 비즈니스 로직이 있으므로 어니언 아키텍처 (계층 적, 분리 된)가 올바른 솔루션이 될 수 있다고 생각했습니다. - Repo/UoW ORM) 패턴 (또는 DAL 또는 실제로 데이터베이스에 연결되는 레이어가 호출되는 모든 것)에 따라 달라집니다. http://msdn.microsoft.com/en-us/library/dn314429.aspxEF6 및 양파 아키텍처 - 저장소 패턴이없는 첫 번째 데이터베이스
- 가EF6 멋지게 단위는 다음과 같이 경계로 DbContexts을 구현하는 리포 패턴없이 테스트 할 수 있습니다하지만 때문에 내 경우에는 환매 약정 (EF의 위쪽)/UOW이 필요하다는 것을 확실하지 않다
대부분의 일반 리포 예는
- 비 일반적인 레 포스가 많은 코드를 야기하는 경향이 그들이 LINQ 쿼리를 동의 방법 (표현처럼> 쿼리)를 노출하기 때문에, 새는 추상화를 사용하는 경향이
여기에 몇 가지 질문이 있습니다 :
1) 대부분의 예제는 EF 코드와 코어 레이어의 POCO 객체를 사용하지만 데이터베이스를 먼저 사용하고 모델을 생성해야합니다. 코어에서 EF 생성 .edmx 모델을 사용할 수 있습니까? 그렇지 않으면 데이터 액세스에 불필요한 결합이 생깁니 까? EF에서 생성 된 클래스 (테이블 필드가있는 .cs 파일)를 EF에서 생성 된 데이터 액세스 코드 (context.tt 파일 등)로 분할하는 방법이 있습니까? 내가 대신 저장소 인터페이스의,이 의미
public class OrderService(IMyDbContext) { ... }
의존성으로 전달되는 경계 DbContext 인터페이스와 같은 서비스 레이어()를 구현할 계획입니다
2), DbSets와 DbContext 래퍼 인터페이스가있을 것입니다 . 단위 테스트는 모의 IMyDbContext와 모의 IDataSet을 사용하여 수행 할 수 있습니다. 데이터베이스 추상화라는 전체 개념을 능가하지 않습니까? 이것은 단위 테스트를하기에 충분하지만 아키텍처 측면에서 보면 괜찮은가요? Repo/UoW (EF 상단에 있음) 패턴이 제공하는 멋진 기능이 누락 되었습니까? http://www.wekeroad.com/2014/03/04/repositories-and-unitofwork-are-not-a-good-idea/
http://lostechies.com/jimmybogard/2012/10/08/favor-query-objects-over-repositories/
하지만 난 정말 양파 + 쿼리 개체와 예제를 발견하지 않았습니다 :
3) 저장소에 대한 하나 개의 대안 (비록되지 매우 인기가) 쿼리 개체 것 같다. 이것이 리포지토리 인터페이스 계층에 대한 합리적인 선택 일 수 있습니까? 대신 쿼리 인터페이스 배치 및 인터페이스 (데이터 액세스) 계층의 쿼리 구현? QueryObjects 내에 모든 데이터 액세스 로직을 배치해야합니까? DbContext.Where를 Coltroller/Service 계층에서 직접 쿼리하면 데이터 액세스와 비즈니스 논리 간의 불필요한 결합이 발생합니까?
귀하의 질문에 흥미롭고 관련성이 있지만, StackOverflow Q & A 형식에는 너무 광범위합니다. –
아마도이 Q는 http://codereview.stackexchange.com에서 더 적합합니다. –