我使用实体框架 4 和自我跟踪实体。架构是这样的:
患者 -> 检查 -> LeftPictures -> RightPictures
所以有这两个关系的TrackableCollection Patient 1 - * ....Pictures。现在在加载客户表格和浏览详细信息时,我不需要加载这些数据图像,只有在为考试详细信息加载另一个表格时!
我正在使用类库作为数据存储库从数据库(SQL Server)和这段代码中获取数据:
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)。我想这被称为延迟加载,当我立即关闭实体连接时我不明白如何实现它,我想保持这样。
我通过应用程序使用 BindingSource 组件。
获得预期结果的最佳方法是什么?
谢谢你。