Pourquoi utiliser ICollection et non IEnumerable ou List dans les relations plusieurs-à-plusieurs/un-à-plusieurs ?
Source : Stack Overflow
Pourquoi utiliser ICollection et non IEnumerable ou List dans les relations plusieurs-à-plusieurs/un-à-plusieurs ?
Source : Stack Overflow
En général, ce que vous choisissez dépendra des méthodes auxquelles vous avez besoin d’accéder. De manière générale - IEnumerable<T> pour une liste d’objets qui n’a besoin que d’être parcourue, ICollection<T> pour une liste d’objets qui doit être parcourue et modifiée, List<T> pour une liste d’objets qui doit être parcourue, modifiée et manipulée (par exemple triée, recherchée, etc. ; les éléments sont accessibles par index dans les List).
D’un point de vue plus spécifique, le chargement paresseux (lazy loading) entre en jeu dans le choix du type. Par défaut, les propriétés de navigation dans Entity Framework sont accompagnées du suivi des modifications et sont des proxies. Pour que le proxy dynamique soit créé en tant que propriété de navigation, le type virtuel doit implémenter ICollection.
Une propriété de navigation qui représente le côté “plusieurs” d’une relation doit renvoyer un type qui implémente ICollection, où T est le type de l’objet à l’autre extrémité de la relation. – Conditions requises pour la création de proxies POCO – MS Learn
MS Learn contient également plus d’informations sur la définition et la gestion des relations dans Entity Framework.