我使用 EF4 模型优先方法创建了一个数据库。在我的模型中,两个实体之间存在 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
通过集合检索 a 时,它的集合始终为空。container.Diagnoses
.TreatmentSchemas
我尝试调试 EF4 生成的代码,它所做的只是懒惰地创建所述集合,但它没有用关联的对象填充它。Ayende 的Entity Framework Profiler显示在访问该属性时根本没有生成任何查询,这让我相信我在这里做错了什么。
我怎样才能得到相关的列表TreatmentSchemas
?