2012-01-04 3 views
0

DbSet에서 ObjectSet을 만들 수 있습니까?DbSet 대 ObjectSet - 문자열 술어

일부 배경 정보 : 개체 컨텍스트 내에서 DbSets를 반환하는 모델 (EF 4.2)이 있습니다. 이전 데이터 모델 (EF4)에서 API를 지원하도록 API를 개조해야합니다. 이전 데이터 모델은 개체 집합을 반환하고 API (IIS에서 호스팅되는 WCF 3.5 서비스)의 여러 메서드는 이전 모델에 전달 된 쿼리 문자열 조건자를 수락합니다. 새 모델에서이 동작을 복제해야하지만 DbSet.Where 메서드는 문자열 조건 자 매개 변수를 허용하지 않습니다. Object Context (ObjectContext.CreateObjectSet<T>(string))에서 객체 세트를 생성하여 부분적으로 작동하도록 만들 수 있었지만 이렇게하면 어떤 include 문도 제대로 작동하지 않는 것처럼 보일 수 있습니다.

DbSet로 방식 중 하나를 통과 문자열 술어가 있는가, 또는 .Include 방법은 관련 데이터 세트를로드하는 DbSet에서 ObjectSet을 얻을 수있는 방법이 있나요? advnce에서

감사합니다 (아래의 일부 코드 조각) :

클래스 만들 ObjectSet (그래서 내 컨텍스트 초기화하고 DbSet는 ClinicalContext.Exams 등 이들에 대해 반환 사용하는 대신, 나는 기본 개체 컨텍스트를 얻고 생성 DbSet에 포함 된 것 같은 개체를 사용하는 것과 EntitySet.

public class ExamServicesEntities 
{ 
    private ClinicalContext _Context; 
    public ExamServicesEntities(ClinicalContext context) 
    { 
     _Context = context; 
    } 

    private ObjectSet<Exam> _ExamEntities; 
    public ObjectSet<Exam> Exams 
    { 
     get 
     { 
      if (_ExamEntities == null) 
      { 
       _ExamEntities = _Context.ObjectContext.CreateObjectSet<Exam>("Exams"); 
      } 
      return _ExamEntities; 
     } 
    } 

    private ObjectSet<Visit> _VisitEntities; 
    public ObjectSet<Visit> Visits 
    { 
     get 
     { 
      if (_VisitEntities == null) 
      { 
       _VisitEntities = _Context.ObjectContext.CreateObjectSet<Visit>("Visits"); 
      } 
      return _VisitEntities; 
     } 
    } 

}

이 데이터를 올바르게로드 수행하지만, 내가 다른 개체 (방문에 방문, 방문에 환자가 포함되어 있음) 중 하나를 포함하려고 시도하면 참조가 작성되지 않습니다.

답변

0

ObjectSet을 기반으로 두 번째 컨텍스트 개체를 생성하기 위해 컨텍스트 개체를 생성하는 데 사용되는 T4 템플릿을 복사하고 조정하여이를 해결했습니다.