Я использую 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). Я предполагаю, что это называется Lazy Loading, и я не понял, как это сделать, когда я немедленно закрываю соединение сущностей, и я бы хотел остаться таким.
Я использую компоненты BindingSource через приложение.
Каков наилучший метод для получения желаемых результатов?
Спасибо.