Je vois cela beaucoup dans tutoriels, avec les propriétés de navigation comme `` .
Est-ce une exigence obligatoire pour Entity Framework ? Puis-je utiliser `` ?
Quel est le but principal de l’utilisation de au lieu de
ou encore `` ?
Je vois cela beaucoup dans tutoriels, avec les propriétés de navigation comme `` .
Est-ce une exigence obligatoire pour Entity Framework ? Puis-je utiliser `` ?
Quel est le but principal de l’utilisation de au lieu de
ou encore `` ?
Généralement ce que vous choisissez dépendra des méthodes que vous avez besoin accès. En général - IEnumerable<>
(MSDN: http://msdn.microsoft.com/en-us/library/system.collections.ienumerable.aspx) pour une liste d'objets qui ne doit être réitéré par, ICollection<>
(MSDN: http://msdn.microsoft.com/en-us/library/92t2ye13.aspx) pour une liste des objets qui doivent être itérer et modifié, List<>
pour une liste des objets qui doivent être répétées à travers, modifié, triés, etc (Voir ici pour une liste complète: http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx).
D'un point de vue particulier, le chargement paresseux vient jouer avec le choix du type. Par défaut, les propriétés de navigation dans le Cadre de l'Entité venir avec le suivi des modifications et des procurations. Pour que la dynamique de proxy être créé comme une propriété de navigation, le virtuel type doit mettre en oeuvre ICollection
.
Une propriété de navigation qui représente le "beaucoup" à la fin d'une relation doit retourner un type qui implémente ICollection, où T est le type de l'objet à l'autre bout de la relation. -Exigences pour la Création POCO ProcurationsMSDN
Plus d'informations sur la Définition et la Gestion des RelationsMSDN
De répondre à votre question à propos de List<T>
:
List<T>
est une classe; la spécification d'une interface permet une plus grande flexibilité de mise en œuvre. Une meilleure question est "pourquoi pas IList<T>
?"
Pour répondre à cette question, considérons ce qu' IList<T>
ajoute à l' ICollection<T>
: integer indexation, ce qui signifie que les articles ont arbitraire de l'ordre, et peuvent être récupérées par référence à cet ordre. Ce n'est probablement pas significatif dans la plupart des cas, puisque les objets probablement besoin d'être ordonné différemment dans des contextes différents.
L’idée de base de l’utilisation de est a fournir une interface à readonly-accès à certains finit de quantité de données. Enfait vous avez une propriété [ICollection.Count](http://msdn.microsoft.com/en-us/library/system.collections.icollection.count.aspx) .
est plus approprié pour une chaîne de données où vous lisez jusqu'à certain point logique, certains esplicitly de la condition spécifiée par consommateur ou jusqu'à la fin de l’énumération.
Ce que j'ai fait dans le passé est de déclarer mon intérieur de la classe des collections à l'aide IList<Class>
, ICollection<Class>
ou IEnumerable<Class>
(si la liste statique) en fonction de si oui ou non je vais devoir faire un certain nombre de la suite dans une méthode dans mon référentiel: énumérer, de tri/commande ou de la modifier. Quand j'ai juste besoin d'énumérer (et peut-être de tri) sur les objets puis-je créer un temp List<Class>
de travailler avec la collection à l'intérieur d'une méthode IEnumerable. Je pense que cette pratique ne serait efficace que si la collecte est relativement petit, mais il peut être une bonne pratique en général, idk. Veuillez me corriger si il y a des preuves pourquoi ce ne serait pas une bonne pratique.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.