저는 ASP.net MVC 및 Entity Framework를 사용하면서 한동안 저장소 및 서비스 패턴을 구현하는 데 어려움을 겪었습니다.구체적인 서비스가 구체적인 저장소 또는 인터페이스에 의존해야합니까?
리포지토리 패턴의 목적과 리포지토리 패턴이 테스트에 도움이되는 방식을 이해하고 데이터 계층을 상호 교환 가능하게 만듭니다. 그러나 Entity Framework는 이미 저장소/작업 단위 패턴입니다. 필자가 보았던 저장소 패턴의 모든 구현은 EF를 제거하거나 유용한 기능을 제공하거나 IQueryable<T>
속성을 구현하여 순수 주의자들을 싫어하게 만듭니다.
내 서비스 계층에 대한 인터페이스를 작성한 경우 해당 서비스의 구체적인 버전을 구현하면 해당 서비스에서 직접 데이터 계층으로 Entity Framework를 사용하면 안되는 이유가 있습니다 (리포지토리에 배치하는 것과 반대)/작업 패턴의 단위와 종속성 삽입)? 예를 들어, IService
인터페이스를 생성 할 수 없으며 구체적인 EfService
(Entity Framework) 또는 NhService
(NHibernate 버전) 구현을 만들 수 있습니까?
그런 다음 원하는 IoC 컨테이너를 사용하여 원하는 서비스 및 데이터 컨텍스트를 주입 할 수 있습니다. https://github.com/sweeperq/Monona
방법 패턴이 구현되는 의미인가요 : 여기
함께 내가 세르게이의 의견에 따라 올 것을의 예입니다?
세르게이, 왜'DbContext'와'DbSet'을 조롱해야합니까? 서비스를 조롱 할 수 없습니까? 내가 순진 해 보인다면 용서해주십시오. 나는 이것을 오랫동안 이해하려고 노력했으며 목적을 결코 이해하지 못했습니다. 명료하게하기를 원합니다. –
Sam
@Sam 저는 서비스 (또는 저장소에 의존하는 다른 클래스)의 단위 테스트에 대해 이야기하고 있습니다. –
나를 가리킬 수있는 유용한 예제가 있습니까? 나는 리파지토리가 단위 테스트에 당신의 서비스를 더 쉽게 만드는 방법을보기 위해 고심하고있다. – Sam