Я использую Entity Framework 4 и Self Tracking Entities. Схема такая:
Пациент -> Обследования -> LeftPictures -> RightPictures
Итак, есть TrackableCollection этих двух отношений Пациент 1 - * ....Изображения. Теперь при загрузке формы клиентов и просмотре деталей мне не нужно загружать эти изображения данных, только когда загружается другая форма для деталей исследования!
Я использую библиотеку классов в качестве хранилища данных для получения данных из базы данных (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). Я предполагаю, что это называется ленивой загрузкой, и я не понял, как это сделать, когда я немедленно закрываю соединение Entities, и я хотел бы остаться таким.
Я использую компоненты BindingSource через приложение.
Каков наилучший метод для получения желаемых результатов?
Спасибо.