우리는 현재 즉시 사용 가능한 객체 관계형 매퍼를 사용하거나 우리 자신의 롤링을 선택할 수있는 상황에 처해 있습니다.
데이터 계층과 비즈니스 계층이 불행하게 뭉친 레거시 응용 프로그램 (ASP.NET + SQL Server)이 있습니다. 시스템은 데이터 액세스 측면에서 특히 복잡하지 않습니다. 상호 관련된 테이블의 큰 그룹 (35-40)에서 데이터를 읽고 메모리에서 조작하고 요약 형식으로 다른 테이블에 다시 저장합니다. 이제 일부 리팩토링 기회가 있으며 데이터 액세스를 분리하고 올바르게 구성하는 데 사용할 후보 기술을 찾고 있습니다.
우리가 결정한 기술은 다음과 같습니다.
- 도메인 모델에 POCO 객체가 있으며 지속성
- 추상화 된 기본 데이터 소스에 대해 도메인 모델 객체를 단위 테스트 할 수있는 추상화 계층
이미 패턴 및 프레임 워크 등의 측면에서 이미 많은 것들이 있습니다.
개인적으로 저는 ADO.NET Unit Testable Repository Generator / POCO Entity Generator 와 함께 EF를 사용하려고 합니다. 모든 요구 사항을 충족하고 Repo / UnitOfWork 패턴에 쉽게 번들로 묶을 수 있으며 DB 구조는 합리적으로 성숙하여 이미 리팩터링을 거쳐 모델을 매일 변경하지 않습니다.
그러나 그룹의 다른 사람들은 우리 자신의 DAL을 처음부터 완전히 설계 / 롤링하도록 제안하고 있습니다. (사용자 정의 DataMappers, DataContexts, Repository, 모든 곳의 인터페이스, 콘크리트 객체를 생성하기위한 의존성 주입 과잉, 사용자 정의 LINQ- 언더 리 쿼리 변환, 사용자 정의 캐싱 구현, 사용자 정의 FetchPlan 구현 ...) 목록은 계속되고 솔직합니다. 광기로
"적어도 우리는 우리 자신의 코드를 제어 할 것입니다"또는 "이전 프로젝트에서 L2S / EF를 사용해 보았지만 두통에 지나지 않았습니다." (내가 프로덕션 환경에서 두 가지를 모두 사용했지만 문제가 거의없고 관리가 용이 한 것을 발견했지만)
따라서 경험 많은 숙련 된 개발자 / 건축가에게이 제품을 완전히 재난이 될 것 같은 것으로부터 멀리 떨어 뜨리는 데 도움이되는 지혜로운 말이 있습니다. 나는 EF 문제를 피 함으로써 얻은 이익 이 바퀴를 다시 발명하려고 시도하는 것만 큼 빨리 사라질 것이라고 생각합니다 .