Entity Framework 4 と Self Tracking Entities を使用しています。スキーマは次のようになります。
患者 -> 検査 -> LeftPictures -> RightPictures
したがって、これら 2 つの関係の 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) のすべての画像を取得する必要があります。それは遅延読み込みと呼ばれていると思いますが、エンティティ接続をすぐに閉じている間にそれを実現する方法がわかりません。このままでいたいです。
アプリケーションを通じて BindingSource コンポーネントを使用します。
望ましい結果を得るための最良の方法は何ですか?
ありがとうございました。