엔티티 개체를 저장소에서 노출해야 합니까?
는 인터페이스를 있습니다.IRepository
리포지토리는 응용 프로그램을 대신하여 엔터티 프레임워크에서 쿼리를 수행하고 생성된 엔터티 개체를 직접 반환합니다.
구의요점을 하는 데 요.IRepository
나중에 서로 다른 저장소로 전환할 수 있습니다.그러나 엔터티 프레임워크에서 반환한 대로 정확한 엔터티 개체를 반환하면 이 문제가 해결됩니다.이것이 허용됩니까?
따라서 응용프로그램에 노출하기 전에 리포지토리에서 모든 Entity Framework 개체를 비즈니스 개체로 변환해야 합니까?이러한 개체는 인터페이스를 구현해야 합니까 아니면 공통 기본 유형을 가져야 합니까?
리포지토리 인터페이스는 비즈니스/도메인 엔터티만 처리해야 합니다. 즉, 리포지토리는 앱에서 알려진 개체, 즉 기본 영구 액세스 구현과 관련이 없는 개체만 보내고 받습니다.
EF 또는 Nhibernate 엔티티는 도메인 데이터가 아닌 지속성 데이터를 모델링합니다.따라서 IR 저장소는 ORM의 구현 세부 정보인 개체를 반환할 것이 아니라 앱에서 직접 사용할 수 있는 개체(작업에 따라 도메인 엔터티 또는 단순화된 뷰 모델)를 반환해야 합니다.
저장소 구현에서는 해당 앱 엔티티(일반적으로 AutoMapper와 같은 매핑기를 사용)에 매핑될 ORM 엔티티를 처리합니다.간단히 말해서, IR 저장소를 설계할 때는 구현에 대한 모든 것을 잊어버립니다.그렇기 때문에 ORM을 사용할지/사용할지 결정하기 전에 인터페이스를 설계하는 것이 좋습니다.
기본적으로 저장소는 앱 도메인 컨텍스트와 지속성 컨텍스트 사이의 게이트웨이이며 앱이 저장소의 구현 세부 정보와 연결되어서는 안 됩니다.
엔티티를 생성하기 위해 POCO 템플릿 중 하나를 사용해야 합니다.이렇게 하면 엔티티는 엔티티 프레임워크에 대한 특별한 종속성이 없으며 계층 간에 자유롭게 전달될 수 있습니다.이는 완전히 별도의 도메인 모델을 유지하고 둘 사이의 매핑을 수행하는 것에 비해 많은 노력을 절약합니다(단, 도메인 모델이 엔티티 모델과 크게 다르지 않은 경우에는 더 의미가 있습니다).
POCO 엔티티를 사용하는 경우 공급자가 유사한 작업을 수행한다고 가정할 수 있습니다.또한 속성이 데이터베이스에 매핑된 엔티티를 반환합니다.따라서 엔티티가 각 공급자에 대해 다른 속성 이름을 가지지 않는 한(다른 이름을 갖는 것에 대한 논리적 설명을 찾을 수 없음) 저장소에서 비즈니스로 직접 반환할 수 있다고 가정할 수 있습니다.
언급URL : https://stackoverflow.com/questions/9822107/should-entity-objects-be-exposed-by-the-repository
'it-source' 카테고리의 다른 글
Application Insight 메트릭에서 각 요청에 대한 사용자 지정 속성 추가 (0) | 2023.08.04 |
---|---|
XMLHttpRequest 대 HttpRequest (0) | 2023.08.04 |
jQuery를 사용하여 한 부모에서 다른 부모로 자식 요소를 이동하는 방법 (0) | 2023.08.04 |
iPad/iPhone 호버 문제로 인해 사용자가 링크를 두 번 클릭합니다. (0) | 2023.08.04 |
개발 및 프로덕션 데이터베이스 동기화 방법 (0) | 2023.07.30 |