Entity Framework 4.0: свойства самообследования загрузки и навигации - PullRequest
0 голосов
/ 25 июля 2011

У меня есть этот код для моего класса доступа к данным, в который я хочу загрузить всех Пациентов, где они должны быть, Пациент. Адреса, Пациент. Экзамены, Экзамены.* Как загрузить все связанные данные с пациентом?Мне не удалось загрузить даже адрес.

Это текущий код:

            db.Patients.Include("Addresses");
            db.Patients.Include("Examinations");

            db.Examinations.Include("LeftEyePictures");
            db.Examinations.Include("RightEyePictures");

            List<Patient> list = db.Patients.ToList();

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

            return list;

Спасибо.

Ответы [ 2 ]

1 голос
/ 25 июля 2011

есть два способа: первая: включить отложенную загрузку перед загрузкой

db.ContextOptions.LazyLoadingEnabled = true;
List<Patient> list = db.Patients.ToList(); // here is All Patients with Linked objects
db.ContextOptions.LazyLoadingEnabled = false;

Затем отключите, если вам это не нужно

второй: Handload

   db.Patients.Addresses.Load()
   db.Patients.Examinations.Load()
   db.Examinations.LeftEyePictures.Load()
   db.Examinations.RightEyePicturesLoad()

Вы можете chesk перед загрузкой: (этот или аналогичный)

   if(db.Patients.Addresses.IsLoaded==false)
      db.Patients.Addresses.Load
1 голос
/ 25 июля 2011

Include должен быть частью запроса!

List<Patient> list = db.Patients.Include("Addresses")
                                .Include("Examinations.LeftEyePicutres")
                                .Include("Examinations.RightEyePicutres")
                                .ToList();
...