EF에서 ADO.NET으로의 전환

ado.net asp.net-mvc-3 dapper entity-framework

문제

asp.net mvc 3 응용 프로그램의 몇 가지 모듈 마이그레이션에 대한 제안 : 현재 우리는 POCO 클래스와 함께 EF를 사용하고 있지만 향후 일부 성능 기반 모듈에 대해서는 ADO.NET 또는 다른 ORM 도구 (DAPPER .그물).

지금 우리가 직면 한 문제는 컬렉션 클래스가 EF를 통해로드되는 관점, 이러한 엔티티 클래스가 다른 ADO.NET 또는 ORM 도구를 사용하여 EF와 완전히 동일한 방식으로로드되어야하는 전략입니다. .

내가 원하는 것은 데이터 액세스 레이어에서 최소한의 변경만으로 EF & ADO.NET간에 전환 할 수 있다는 것입니다. 뷰가 그 효과를 얻는 것을 원하지 않기 때문입니다.

수락 된 답변

리포지토리 디자인 패턴 을 사용하여 데이터 액세스 계층의 구현을 숨길 수 있습니다. 리포지토리는 동일한 POCO를 반환하며 두꺼운 부분 아래에서 사용중인 데이터 액세스 계층과 상관없이 동일한 작업 계약을 맺습니다. 이제는 실제 POCO를 사용하는 경우이 방법을 사용하는 것이 좋습니다.이 방법은 게으른 로딩을위한 가상 메서드가 없습니다. 이 작업을 수행하려면 엔티티에서 종속 콜렉션로드를 명시 적으로 처리해야합니다.


인기 답변

지금까지 봤지만 하나의 ORM / DAL에서 다른 ORM / DAL로 완벽하게 전환하는 것은 환상입니다. Kevin이 제안한 저장소 패턴은 큰 도움이되며 선행 조건 (+1)도 있습니다. 그럼에도 불구하고 각 ORM은 도메인 계층에서 차지하는 공간이 있습니다. EF를 사용하면 가상 속성, 데이터 주석 또는 쉽게 잊어 버리는 가상 속성을 사용하여 쉽게 적용 할 수있는 유효성 검사 프레임 워크를 사용할 수 있습니다. 조인 테이블을 통해 맵핑하는 EF의 기능에 의존 할 수 있습니다. EF로 인해 하지 않는 일 (그러나하고 싶은 일)이있을 수 있습니다.

(EF 컨텍스트 위에 스캐 폴딩을 실행하는 도구는 말할 필요도 없으며, 잠금 기능을 더욱 강화할 수도 있습니다.)

당신의 상황에서 내가 할 수있는 일들 (당신을 위해 명백한 것을 말하면 저를 용서하십시오)

  • EF를 최적으로 사용하십시오. (Best mappings, best associations, ...) 미래를 준비하는 것은 좋지만 YAGNI 패턴으로 쉽게 퇴화합니다.
  • linq + EF에 능숙 해집니다 : EF로 불필요하게 성능을 죽일 수있는 많은 방법이 있습니다. EF가 충분하다고 가정 해보십시오!
  • 저장 프로 시저, 병렬 처리, 백그라운드 처리 및 / 또는 데이터 볼륨 축소와 같은 고성능을위한 대안을 계속 찾고 요구 사항 (기능적 및 비 기능적)이 충분히 명확한 경우 하나를 선택하십시오.
  • 어쩌면 지금 DTO가있는 추상화 계층을 도입 할 수 있으며, 앞으로는 다른 ORM 또는 ADO가 쉽게 구현할 수 있습니다.
  • 나중에 POCO를 다른 객체로 구현할 수있는 인터페이스로 노출합니다.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.