0

저는 Entity Framework 4와 Self Tracking Entities를 사용합니다. 스키마는 같은 수 있습니다 :Entity Framework 자체 추적 TrackableCollection <T> 필요할 때만 관계 데이터를로드하는 방법?

환자는 -> 시험 -> LeftPictures - * .... 사진 -> RightPictures

그래서 한 환자 두 관계의 TrackableCollection있다. 고객 양식을로드하고 세부 사항을 탐색 할 때 시험 세부 사항을 위해 다른 양식이로드 된 경우에만 데이터 이미지를로드 할 필요가 없습니다!

나는 데이터베이스 (SQL 서버)에서 데이터와 코드 얻을 수있는 데이터 저장소와 같은 클래스 라이브러리를 사용하고 있습니다 : 가서 얻을 수있는 시험의 세부 사항을 호출 할 때

public List<Patient> GetAllPatients() 
{ 
    try 
    { 
     using (OptoEntities db = new OptoEntities()) 
     { 
      List<Patient> list = db.Patients 
       .Include("Addresses") 
       .Include("PhoneNumbers") 
       .Include("Examinations").ToList(); 

      list.ForEach(p => 
          { 
           p.ChangeTracker.ChangeTrackingEnabled = true; 

           if (!p.Addresses.IsNull() && 
            p.Addresses.Count > 0) 
            p.Addresses.ForEach(a => a.ChangeTracker.ChangeTrackingEnabled = true); 

           if (!p.PhoneNumbers.IsNull() && 
            p.PhoneNumbers.Count > 0) 
            p.PhoneNumbers.ForEach(a => a.ChangeTracker.ChangeTrackingEnabled = true); 

           if (!p.Examinations.IsNull() && 
            p.Examinations.Count > 0) 
            p.Examinations.ForEach(e => 
                   { 
                    e.ChangeTracker.ChangeTrackingEnabled = true; 

                   }); 
          }); 

      return list; 
     } 
    } 
    catch (Exception ex) 
    { 
     return new List<Patient>(); 
    } 
} 

지금 내가 필요를 형성하는 모든 검사 관계를위한 이미지 (LeftEyePictures, RightEyePictures). 나는 그것이 Lazy Loading이라고 부르고, Entities 연결을 즉시 닫을 때 어떻게되는지 이해하지 못하고 이렇게 생각하고 있습니다.

응용 프로그램을 통해 BindingSource 구성 요소를 사용합니다.

원하는 결과를 얻는 가장 좋은 방법은 무엇입니까?

감사합니다.

답변

0

자체 추적 엔티티는 지연로드를 지원하지 않습니다. 또한 엔티티가 라이브 컨텍스트에 첨부 된 경우에만 지연로드가 작동합니다. 컨텍스트를 즉시 닫거나 처리 할 필요가 없습니다. WinForms의 경우 응용 프로그램 컨텍스트는 일반적으로 더 긴 시간 동안 생깁니다 (양식 당 하나의 컨텍스트를 따르거나 발표자 방식 당 하나의 컨텍스트를 따를 수 있음).

WinForms 응용 프로그램은 지연로드 또는 변경 추적과 같은 모든 기능이 기본적으로 작동하는 일반 첨부 엔티티에 대한 시나리오입니다. STE는 엔터티를 serialize하고 다른 응용 프로그램에 전달해야하는 분산 시스템에서 사용되어야합니다 (웹 서비스 호출을 통해).

관련 문제