J'ai créé une base de données en utilisant l'approche modèle EF4. Dans mon modèle, il y a une relation N-à-M entre deux entités:Comment utiliser correctement les propriétés de navigation EF4?
J'ai rempli ma base de données avec des données factices, dont 3 enregistrements de type Diagnosis
et 3 enregistrements de type TreatmentSchema
et associations entre eux. Voici l'extrait de code que je faisais ceci:
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();
}
Je vérifiais que les associations sont en effet stockées dans la table de référence créée par la cartographie de EF4. Toutefois, lorsque je récupère un Diagnosis
via la collection container.Diagnoses
ultérieurement, sa collection .TreatmentSchemas
est toujours vide.
J'ai essayé de déboguer dans le code généré par EF4 et tout ce qu'il fait est de créer paresseusement la dite collection, mais elle ne la remplit pas avec les objets associés. Le Entity Framework Profiler d'Ayende ne montre aucune requête générée lors de l'accès à la propriété, ce qui me porte à croire que je fais quelque chose de mal ici.
Comment puis-je obtenir une liste des TreatmentSchemas
associés?
Dans le cas où il est pertinent, j'utilise le « Self-entité de référence du générateur » pour générer le code pour mon modèle EF4. – Cygon