EF 4.0에 대한 리포지토리 패턴을 사용할 때 함수 가져 오기 기능을 어떻게 구현했는지 조언 할 수 있습니까?Entity Framework 4.0의 함수 가져 오기 및 리포지토리 패턴
우리는 후보 엔티티에 매핑 된 테이블과 후보로 매핑되는 기존 sproc의 함수 가져 오기를 가지고 있습니다. 이것은 EF에서 훌륭하게 작동하지만, 우리는 그들의 생성자 인 IObjectSet을 취하는 Repositories를 사용하여 추상화합니다. 여기서 T는 POCO 엔티티입니다. 그러나 이것은 함수 가져 오기에 대한 참조를 얻을 수 없다는 것을 의미합니다. 필자가 볼 수있는 유일한 방법은 필요로하는 저장소에 대한 ObjectContext에 대한 참조를 전달하는 것입니다.하지만 이것은 약간의 디자인 냄새처럼 느껴집니다.
여러 저장소가 맞춤 인터페이스로 확장 되어도 여전히 동일한 문제가 있습니다.
public class CandidateRepository : Repository<Candidate>, ICandidateRepository
{
public CandidateRepository(IObjectSet<Candidate> entities)
: base(entities)
{
}
public Candidate GetByEmail(string email)
{
return Entities.SingleOrDefault(c => c.EmailAddress.Equals(email));
}
public bool CandidateExists(string candidateNumber)
{
return Entities.SingleOrDefault(c => c.Number.Equals(candidateNumber)) != null;
}
public Candidate GetByNumber(string number)
{
return Entities.SingleOrDefault(c => c.Number.Equals(number));
}
public Candidate GetMember(string number)
{
return new Candidate(); //This one needs to return from the Function Import
}
}
큰 호응을 얻었습니다.
감사합니다. Yury. 당신은 충분히 "골재 뿌리"의 정의에 대해 자세히 설명해 주시겠습니까? 우리는 더 나은 확장 성을 위해 리팩터링 할 수없는 개발에 그다지 관심이 없습니다. –
글쎄, "집계 루트"는 도메인 구동 디자인 (DDD) 개념입니다. 간단한 Order 1 .. * OrderLine 모델을 고려해보십시오. 일반적으로 주문없이 OrderLine을 만들지 않으므로 OrderRepository 만 필요합니다. 따라서 Order는 OrderLines에 대한 참조를 보유하는 집계 루트입니다. 집계 루틴을 정의하는 것은 응용 프로그램에서 '모델링'하려고하는 객체에 따라 달라지는 실용적인 DDD 질문입니다. –