IOC/종속성 주입을 사용하여 엔티티/도메인 객체를 어떻게 처리해야합니까?

StackOverflow https://stackoverflow.com/questions/1405665

문제

현재 Plinqo를 사용하여 데이터베이스에서 모든 엔티티를 생성합니다.

최근에 나는 구조 맵을 사용하여 의존성 주입과 "내 우려를 분리하는 학습 과정의 일부로 사용하기 시작했습니다. 생성 된 모든 엔티티 클래스에는 LINQ의 일부인 EntitySet을 사용하여 고도로 커플 링 된 속성이 포함되어있어 엔티티가 System.Data.linq 사용에 의존하게합니다.

Plinqo 생성 엔티티를 계속 사용하고 싶지만 동시에 일종의 기본 클래스/데이터 전용 객체를 생성하고 다른 어셈블리로 이동 한 다음 사용해야 할 것 같습니다. 필요에 따라 둘을 변환 할 수있는 일종의 자동 매퍼. 기껏해야 (또는 최악의 방법에 따라), 나중에 다른 콘크리트 유형으로 주입 할 수 있도록 몇 가지 인터페이스를 원합니다.

이것은 과잉입니까? 결국 SQL Server를 사용하여 웹 서비스 사용으로 직접 이동할 것이며, 해당 엔티티 세트가 쉽게 와이어를 넘어갈 것이라고 의심합니다.

누구든지 이와 같은 시나리오로 작업하는 좋은 예가 있습니까?

티아

도움이 되었습니까?

해결책

나는 당신이 올바른 길을 가고 있다고 생각합니다. 생성 된 L2S 클래스의 이름이 당신을 속이게하지 마십시오. 그들은 DDD 용어의 엔티티가 아니라 단순히 데이터베이스의 표현을 강력하게 입력했습니다. 당신이 나에게 물어 보면, 그것은 도메인 계층을 침범하지 않아야하는 구현 세부 사항입니다.

Currect .NET Framework를 사용하여 BCL을 순전히 유지하고 추가 라이브러리를 사용하지 않으면 도메인 모델에서 영구 지정 엔터티를 정의한 다음 데이터 액세스 계층의 L2S 클래스에 매핑하는 것입니다. 고통이지만 automapper 그런 점에서 도움이 될 수 있습니다.

순수한 BCL에서 약간의 손상을 입을 의향이 있다면 지속성 무지를 제공하는 오픈 소스 라이브러리가 있습니다. nhibernate - 나는 nhibernate에 대한 개인적인 경험이 없지만 많은 똑똑한 사람들이 그것을 높이 생각합니다.

.NET 4.0, 엔티티 프레임 워크 및 LINQ에서 엔티티에서 또한 지속성 무지를 제공 할 것입니다.

제레미 밀러는 MSDN Magazine의 기사에 대해 다소 다소 접촉하는 기사.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top