实体框架4.0自跟踪负载导航属性



我有这个代码为我的数据访问类,我想加载所有的病人,他们应该有的地方,病人。地址,耐心。考试,考试。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;

谢谢。

Include必须是查询的一部分!

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

有两种方法:1:加载前启用延迟加载

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

然后禁用,如果你不需要它

2: Handload

   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

相关内容

最新更新