EF4에서 Dapper.net으로 응용 프로그램 마이그레이션

c# dapper entity-framework-4 wpf

문제

Entity Framework4를 사용하는 대형 WPF 응용 프로그램에서 작업 중입니다. 이제 클라이언트가 EF4에서 Dapper.net으로 응용 프로그램을 마이그레이션하도록 요청하고 있습니다. Daum에서 EF4의 다음 기능이 누락되어이 마이그레이션 작업의 타당성 및 비즈니스 이득에 대해 확신하지 못합니다.

  • 변경 추적
  • 게으른 로딩
  • 열망하는 가져 오기
  • 계곡
  • 신원지도
  • 작업 추적 단위

WPF 응용 프로그램에 대해 더 좋은 마이크로 ORM이 있는지 나에게 제안하십시오.

수락 된 답변

EF4와 dapper는 목표와 기능이 다른 여러 도구입니다. 사실, EF와 같은 도구와 도구를 나란히 (때로는 같은 객체 모델에 대해서도) 작업하는 것이 일반적입니다. 특히 총알에 나열한 모든 것을 사용 하지 않는 경우에는 더욱 그렇습니다. 예를 들어, 많은 "디스플레이"코드 (페이지를 사용자에게 보여주는 등)는 그러한 것들을 사용하지 않는 경향이 있습니다. 읽기 전용 코드의 경우, 가끔씩 간단한 구현으로 전환하는 것이 당황스럽지 않을 수 있습니다. SQL을 작성하고 멀리 가지십시오.

하나! 당신이 언급 한 기능을 사용 않는 코드에 관한 한,이 훨씬 더 근본적인 변화이다; 실제로 "다시 구현"하는 것만 큼 "마이그레이션"하지 않습니다. 변경 추적과 같은 것들이 없다면, 당신 자신의 코드는 각 프로세스가 수행하고있는 작업에 대해 좀 더 명확해질 필요가 있습니다. 이것은 실제로 IMO이지만, 기존 코드베이스에 추가하는 것은 쉽지 않습니다. 처음부터 시작한다면 (또는 기존 모델의 새 테이블 등) 일반적으로 매우 쉽습니다.

개인적으로 여기에서 취하는 접근법은 먼저 주요 데이터 가져 오기 작업 (특히 고주파수, 복잡한 쿼리 또는 대용량)을 살펴보고 더 이상 기반의 읽기 작업으로 대체 할 수 있는지 고려합니다. 특히 읽기 전용 인 경우. 최소한의 작업으로 큰 성과를 거둘 수 있습니다. 프로파일 링이 중요하며, 미니 프로파일 러와 같은 도구가 도움이 될 수 있습니다. 나는 개인적으로 나머지 부분을 위해 기존의 작업중인 데이터 레이어를 추출하기 시작 하지 않을 것입니다. 그것은 그 작업을 위해 발명하는 것처럼 보입니다. 그리고 그것은 복잡 할 것입니다 (ORM을 바꾸는 것은 쉬운 일이 아닙니다 ).

그러나 나는, EF의 최신 버전으로 업데이트에 몇 가지 심각한 생각을 둘 것입니다; P는

(아, 그리고 그것이 중요하다면 : 나는 주 저자이자 더러워진 관리자이다.)


인기 답변

제 생각에 중요한 질문은 고객이이 프로젝트를 다른 프레임 워크로 마이그레이션하기를 원하는 이유입니다.

일부 기능 또는 모듈의 성능 저하로 인해 마이그레이션을 수행하기를 원할 경우 Marc의 접근 방식을 사용하여 시스템의 중요한 부분 만 마이그레이션 할 수 있습니다.

우리 회사의 프로젝트 중 일부에서는 Dapper와 함께 전면적으로 NHibernate를 사용하고 있으며 실제로 작동합니다. 특히보고 및 일괄 처리에서 간단한 CRUD 작업 대신 저장 프로 시저를 호출하려는 경우가 있습니다.

이 경로를 따르기로 결정했다면 EF와 Dapper가 동일한 데이터베이스 연결에서 작동하도록 "Unit of Work"패턴을 사용하는 것을 고려해 볼 것을 제안합니다 (필자는이 문제에 대해 블로그 를 작성했습니다).

물론 Dapper (EF 또는 NH와 같은 "본격적인"ORM과 반대)에는 세션 개념이없고 EF로 수정 된 "더티 (dirty)"객체는 Dapper가 읽어야 만하는 것과 같은 기술적 차이점을 염두에 두어야합니다 DB에 플러시 변경.



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