0

EF4モデルファーストアプローチを使用してデータベースを作成しました。私のモデルでは、2つのエンティティ間にN対Mの関係があります。

ここに画像の説明を入力してください

データベースに、タイプの3つのDiagnosisレコードとタイプの3つのレコード、TreatmentSchemaおよびそれらの間の関連付けを含む、いくつかのダミーデータを入力しました。これを行うために使用したコードスニペットは次のとおりです。

using(var container = new SmartTherapyContainer()) {
  var diagnosisA = new Diagnosis() { Id = Guid.NewGuid(), Name = "Diagnosis A" };
  var diagnosisB = new Diagnosis() { Id = Guid.NewGuid(), Name = "Diagnosis B" };
  var diagnosisC = new Diagnosis() { Id = Guid.NewGuid(), Name = "Diagnosis C" };
  container.Diagnoses.AddObject(diagnosisA);
  container.Diagnoses.AddObject(diagnosisB);
  container.Diagnoses.AddObject(diagnosisC);

  var schemaA = new TreatmentSchema() { Id = Guid.NewGuid(), Name = "Schema 1" };
  var schemaB = new TreatmentSchema() { Id = Guid.NewGuid(), Name = "Schema 1" };
  var schemaC = new TreatmentSchema() { Id = Guid.NewGuid(), Name = "Schema 1" };
  container.Schemas.AddObject(diagnosisA);
  container.Schemas.AddObject(diagnosisB);
  container.Schemas.AddObject(diagnosisC);

  diagnosisB.TreatmentSchemas.Add(schemaA);
  diagnosisC.TreatmentSchemas.Add(schemaA);
  diagnosisC.TreatmentSchemas.Add(schemaB);
  diagnosisC.TreatmentSchemas.Add(schemaC);

  container.SaveChanges();
}

EF4のマッピングによって作成された参照テーブルに関連付けが実際に保存されていることを確認しました。Diagnosisただし、後でコレクションを介してを取得するcontainer.Diagnosesと、その.TreatmentSchemasコレクションは常に空になります。

EF4で生成されたコードにデバッグしてみましたが、コレクションを怠惰に作成するだけですが、関連するオブジェクトでいっぱいになりません。AyendeのEntityFrameworkProfiler、プロパティにアクセスしたときにクエリがまったく生成されていないことを示しています。これにより、ここで何か間違ったことをしていると思います。

関連するリストを取得するにはどうすればよいTreatmentSchemasですか?

4

1 に答える 1

2

デフォルトでは、ナビゲーション プロパティは読み込まれません。積極的な読み込みまたは遅延読み込みのいずれかを使用する必要がありますが、セルフ トラッキング エンティティを使用しているため、STE は遅延読み込みをサポートしていないため、選択できるのは積極的な読み込みのみです。したがって、関連するすべての TreatmentSchemas を含む Diagonstic インスタンスを取得する場合は、次のように呼び出す必要があります。

var diagnosis = context.Diagnoses.Include("TreatmentSchemas").FirstOrDefault();
于 2011-03-19T16:02:31.330 に答える