0

私はデータ アクセス クラスのこのコードを持っています。そこでは、Patient.Addresses、Patient.Examinations、Examinations.LeftEye、Examinations.RightEye など、すべての患者をロードしたいと考えています。

患者に関連するすべてのデータをロードする方法は? アドレスすら読み込めませんでした。

これは現在のコードです:

            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;

ありがとうございました。

4

2 に答える 2

1

Includeクエリの一部である必要があります!

List<Patient> list = db.Patients.Include("Addresses")
                                .Include("Examinations.LeftEyePicutres")
                                .Include("Examinations.RightEyePicutres")
                                .ToList();
于 2011-07-25T16:12:01.230 に答える
1

2 つの方法があります: 1 つ目: 読み込み前に遅延読み込みを有効にする

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

次に、必要ない場合は無効にします

2位:ハンドロード

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

ロードする前にチェックできます:(これまたは類似のもの)

   if(db.Patients.Addresses.IsLoaded==false)
      db.Patients.Addresses.Load
于 2011-07-25T16:23:18.047 に答える