Entity Framework peut-il gérer plusieurs relations sur plusieurs sans object d’intersection?

Utilisation du premier modèle de firebase database: supposons que nous ayons les tables classiques Student , Course et StudentCourse (ce dernier ayant évidemment des FK pour Student et Course ).

Si vous importez ce modèle dans EF, vous obtiendrez un object généré pour chacun d’eux. Les classes Student et Course ont chacune une collection de StudentCourses , à partir desquelles vous devez passer d’une autre relation à l’autre pour accéder au Course ou à l’ Student , respectivement.

J’aimerais que le code soit généré de telle sorte que la table d’intersection sous-jacente soit invisible, c’est-à-dire que l’ Student dispose d’une collection de Courses et que ce dernier dispose d’une collection d’ Students . J’ai vu cela fait dans d’autres logiciels ORM (spécifiquement, TopLink ). Peut-on le faire en EF?

Selon ce tutoriel , vous obtiendrez le comportement souhaité si votre table StudentCourse ne contient que les colonnes de clé étrangère. S’il contient d’autres colonnes, EF générera une entité intermédiaire pour représenter la jointure.

Dans ce cas, supprimer la clé de substitution de la table StudentCourse et la remplacer par une clé primaire composite devrait fonctionner.

Vous pouvez le faire dans EF Code First en utilisant ICollections. Par exemple:

 public class Student { public int ID { get; set; } public ssortingng Name { get; set; } public virtual ICollection Courses { get; set; } public Student() { Courses = New HashSet(); } } 

Répétez cette procédure pour tout échanger. Cela créera trois tables dans votre firebase database (Etudiant, Cours et EtudiantCours) avec une relation m-à-m. Plus important encore, StudentCourse sera un tableau de liaison invisible ne comportant aucune entité dans votre modèle.