Heim >Backend-Entwicklung >C++ >EF Codefirst Navigation Eigenschaften: Initialisieren oder nicht initialisieren?
Entity Framework Code zuerst: Best Practices der Navigation Eigenschaft Initialisierung
Entwicklung mit dem Entitäts -Framework -Code wirft zuerst Fragen zur Initialisierung von Navigationseigenschaften in Ihren einfachen alten CLR -Objekten (POCOs) auf. Während einige sich dafür einsetzen, diese Eigenschaften nicht initialisiert zu lassen, schlagen andere eine Konstruktorinitialisierung vor. Dieser Artikel verdeutlicht den besten Ansatz.
Navigationseigenschaften der Sammlung: Die Initialisierung ist im Allgemeinen unnötig
Für Sammeleigenschaften (z. B. IList<Order>
) fügt die Initialisierung der Geschäftslogik wenig hinzu. Das Initialisieren einer leeren Sammlung schafft nicht von Natur aus eine Entitätsvereinigung. Daher ist die Initialisierung weitgehend eine Frage des Codierungsstils.
Lazy Initialisierung kann Null -Referenz -Ausnahmen verhindern und die Tests vereinfachen. Umgekehrt minimiert die Verwendung automatisch implementierter Eigenschaften ohne Initialisierung den Boilerplate-Code und nutzt den Null-Conditional-Operator von C#. Beachten Sie jedoch, dass initialisierte Sammlungen mit explizitem Laden die Bestimmung erschweren können, ob das Entitätsgerüst die Daten geladen hat.
Referenznavigationseigenschaften: Initialisierung
vermeiden Initialisierung der Referenznavigationseigenschaften (z. B. Customer
) ist stark entmutigt. Das Zuweisen eines Standardwerts (wie ein neues, leeres Objekt) kann zu unvorhersehbarem Verhalten führen.
Wenn im Konstruktor initialisiert wird, überschreibt das Entity -Framework diese Werte während der Objektmaterialisierung oder der faulen Belastung nicht. Dies kann dazu führen, dass leere Unternehmen sparen oder das Beziehungsmanagement stören.
Entity Framework Kernüberlegungen
Während Entity Framework -Kern (Version 2.1 und später) die Beziehungsfestigkeit unterschiedlich behandelt und nicht direkt von initialisierten Referenzeigenschaften beeinflusst wird, überschreiben Sie sie immer noch nicht. Darüber hinaus kann die Initialisierung Include
Abfragen und HasData
Seeding beeinträchtigen.
Empfehlung
Für die erste Entwicklung des optimalen Entitäts -Framework -Codes können Sie die Referenznavigationseigenschaften vollständig initialisieren. Für die Navigationseigenschaften der Sammlung ist die Initialisierung basierend auf persönlichen Präferenz- und Projektanforderungen optional, aber im Allgemeinen unnötig. Dieser Ansatz gewährleistet vorhersehbares Verhalten und Kompatibilität zwischen den Entitätsgerüstversionen.
Das obige ist der detaillierte Inhalt vonEF Codefirst Navigation Eigenschaften: Initialisieren oder nicht initialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!