Я создал базу данных, используя подход модели 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
через коллекцию container.Diagnoses
позже, его коллекция .TreatmentSchemas
всегда пуста.
Я попытался отладить код, сгенерированный EF4, и все, что он делает, это лениво создает указанную коллекцию, но она не заполняет ее связанными объектами. Ayende * Entity Framework Profiler не показывает никаких запросов, генерируемых вообще при обращении к свойству, что заставляет меня поверить, что я здесь что-то не так делаю.
Как я могу получить список связанных TreatmentSchemas
?