2011-12-09 2 views
4

나는 내 자신의 DB를 만들고, 인덱스와 고유 한 제약 조건을 설정하는 것을 선호합니다. 데이터베이스에서 도메인 모델을 생성하는 것은 edmx Entity Framework 디자이너와 함께해야합니다.Entity Framework 4 DB-First Dependency Injection?

이제 Dependency Injection을 사용하여 일부 리포지토리 설정에 관심이 있습니다. StackOverflow에 대한 기사와 게시물을 살펴 보았고 코드 우선 접근법에 집중하는 것 같습니다. CRUD를 처리하고 Dependency Injection을 사용하여 구현 세부 사항을 선택하는 일반적인 저장소를 만드는 방법은 꽤 매끄 럽다.

같은 것을하고 싶습니다만, edmx 프로세스에서 생성 된 도메인 모델이 인터페이스 (IObjectContext/IObjectSet과 반대되는 ObjectContext/ObjectSet)를 구현하는 대신 구체적인 클래스를 상속하는 것으로 보입니다.

db-first/code generation 기법을 사용할 때 Dependency Injection을 사용하는 방법에 대해 지적 해 줄 수있는 사람이 있습니까?

답변

10

어쩌면 나는 당신의 질문을 오해하고있다. 그러나 EDMX가 ObjectContext로부터 상속받은 코드를 생성한다고해서 당신이 의존성 주입을 사용하는 것을 멈추게하지는 않는다. ObjectSet을 리포지토리에 삽입 할 수 없다는 걱정을하는 것처럼 들리지만 사용하도록 설계된 방식은 아닙니다.

here과 같은 일반적인 저장소 패턴을 사용하면 IRepository 인터페이스는 ViewModels/Controllers/Whatever에 삽입하는 것입니다.

따라서 IObjectContext 또는 IObjectSet을 저장소에 삽입하지 마십시오. 대신 IRepsoitory를 필요로하는 클래스에 삽입하고 ObjectSet을 사용하는 IRepository 인터페이스의 구현을 제공합니다. 그런 다음 테스트를 위해 IRepository 인터페이스를 모방하거나 다른 코드에 영향을주지 않고 완전히 다른 구체적인 저장소 구현으로 전환 할 수 있습니다.

우리는 현재 EF4 DB-first와 위의 저장소 패턴과 똑같은 일을하고 있습니다. 그리고 이것은 아주 잘 작동하고 있습니다.

+0

환상적인 기사 CodeFirst 저장소 & DI 패턴과 매우 유사으로 매우 간단입니다. 내가 그것을 더 일찍 발견했을 것이라면 좋겠다! – Sam