Code du framework Entity First: Navigation Property Initialisation Best Practices
Le développement avec le code du cadre d'entité soulève d'abord des questions concernant l'initialisation des propriétés de navigation dans vos anciens objets CLR simples (POCOS). Bien que certains préconisent de laisser ces propriétés non initialisées, d'autres suggèrent une initialisation du constructeur. Cet article clarifie la meilleure approche.
Propriétés de navigation de collecte: l'initialisation n'est généralement pas nécessaire
Pour les propriétés de collecte (par exemple, IList<Order>
), l'initialisation ajoute peu à la logique métier. L'initialisation d'une collection vide ne crée pas intrinsèquement une association d'entité. Par conséquent, l'initialisation est en grande partie une question de style de codage.
L'initialisation paresseuse peut empêcher les exceptions de référence nulles et simplifier les tests. Inversement, l'utilisation de propriétés implémentées automatiquement sans initialisation minimise le code de la plaque d'enfant et exploite l'opérateur de conditionnement nulle de C #. Cependant, sachez qu'avec un chargement explicite, les collections initialisées peuvent compliquer la détermination de si le cadre d'entité a chargé les données.
Propriétés de navigation de référence: Évitez l'initialisation
Initialisation des propriétés de navigation de référence (par exemple, Customer
) est fortement découragée. L'attribution d'une valeur par défaut (comme un nouvel objet vide) peut conduire à un comportement imprévisible.
Si initialisé dans le constructeur, le cadre d'entité ne remplacera pas ces valeurs pendant la matérialisation des objets ou le chargement paresseux. Cela peut entraîner l'épargne des entités vides ou perturber la gestion des relations.
Framework Entity Core Considérations
Alors que l'entité Framework Core (version 2.1 et ultérieure) gère la fixation de la relation différemment et n'est pas directement affectée par les propriétés de référence initialisées, le chargement paresseux ne les écrasera toujours pas. De plus, l'initialisation peut interférer avec Include
requêtes et HasData
semis.
Recommandation
Pour le premier développement du code de cadre d'entité optimal, évitez entièrement d'initialiser les propriétés de navigation de référence. Pour les propriétés de navigation de collecte, l'initialisation est facultative en fonction des préférences personnelles et des besoins du projet, mais généralement inutile. Cette approche assure un comportement et une compatibilité prévisibles entre les versions du cadre d'entité.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!