2011-10-04 2 views
0

리포지토리 패턴이 DbSet 및 DbContext 개체를 통해 Entity Framework Code First에 빌드되는 경우가 종종 있습니다.Entity Framework 코드 첫 번째 래퍼 또는 저장소?

3) 다중 참조 위와 동일 - 명확한 컷 인터페이스

2) 비웃음이 아니므로 주입하는 하드 -

1) 주입 :

그러나 몇 가지 문제를 떠나는 EnitityFramework.dll에 - 내가 먼저 자신의 어셈블리/프로젝트에 내 코드를 작성한 다음 다른 곳에서 참조하고 싶다고 가정 해 봅시다. wrapper없이 entityFramework.dll을 참조해야합니다.

당신이 최선이라면 어떻게 생각하십니까?

답변

2
  1. DbSet 인터페이스를 가지고 있으며, 당신은 일반적으로 자신의 상황에 맞는 클래스는 그래서 그것은 또한 당신이 아무 문제없이 주사를 처리 할 수 ​​있도록 자신의 인터페이스를 구현할 수 DbContext에서 파생 구현합니다.
  2. 이것은 더 복잡한 문제입니다. 모의 문맥이 이해가 안되기 때문에, IDbSet을 모의하는 것은 의미가 없지만 같은 시간에 IQueryable을 노출하는 저장소 나 래퍼를 조롱하거나 Expression<Func<>>이 Linq-to-entities로 전달되는 것을 받아 들일 수도 있습니다. (here은 간단한 예입니다. 왜). 그래서 예 저장소가 이것을 처리 할 수 ​​있지만 더 많은 노력을해야하며 Linq를 사용하여 저장소 호출 코드에서 데이터베이스를 쿼리하지 않습니다. 상위 계층에서 (저장소를 사용할 때 예상대로) 선언적 쿼리를 사용하려면 자신의 스펙을 구현해야합니다.
  3. GFS에 EntityFramework.dll이없고 새로운 솔루션에서 첫 번째 어셈블리를 참조 할 경우 EntityFramework.dll에 대한 참조가 추가되어 코드와 함께 배포되었는지 확인하십시오. 그렇지 않으면 당신 말이 맞습니다. 래퍼가 없으면 참조가 필요합니다.
+0

좋은 점, 개발 시간 동안 나는 EF.dll이 괴롭히는 이유가 바로 바로 종속성을 지적하기를 좋아합니다. –

+0

예외 처리 및 사용자 지정 예외는 어떻게됩니까? 각각의 모든 호출에서 DB 예외를 처리하는 것에 대해 확실하지 않습니다. –

관련 문제