___ qstnhdr ___ Entity-Framework, POCO und ein Privateigentum
___ qstntxt ___
Ich habe die folgende POCO-Klasse erstellt und außerdem die Eigenschaften %code% und %code% privat gemacht (diese Eigenschaften werden entsprechenden Eigenschaften in einem Entity Framework-Modell zugeordnet).
%Vor%
Ich habe erwartet, dass eine Ausnahme auftritt, weil EF diesen beiden Eigenschaften keine Werte zuweisen kann, aber irgendwie hat EF ihnen trotzdem Werte zugewiesen. Wie ist das möglich, da nur Code in %code% class Zugriff auf private Eigenschaften haben sollte?
Danke
___ tag123c ___ C # (sprich "Cis") ist eine objektorientierte Programmiersprache auf hohem Niveau, die für die Erstellung einer Vielzahl von Anwendungen entwickelt wurde, die auf dem .NET Framework (oder .NET Core) ausgeführt werden. C # ist einfach, leistungsfähig, typsicher und objektorientiert.
___ tag123entityframework ___ Bei Fragen zum ADO.NET Entity Framework die Object-Relational-Mapping (ORM) -Tools für das .NET Framework. Fügen Sie gegebenenfalls auch ein versionsspezifisches Tag hinzu.
___ answer10129136 ___
In Umgebungen mit ausreichendem Vertrauensniveau Reflektion kann verwendet werden, um auf Mitglieder zuzugreifen, auf die man normalerweise keinen Zugriff hätte.
Ja - EF, Code zuerst verwenden das an einigen Stellen.
Ich habe ähnliches Verhalten bei privaten Konstruktoren beobachtet - EF / CF kann Ihre Objekte auch dann noch erstellen, wenn Sie es "verstecken" oder versuchen, es zu tun (das war das Verhalten früherer Versionen). bin mir jetzt nicht sicher).
Und ich erinnere mich daran, mit CF-Leuten darüber diskutiert zu haben, warum sie komplexe Eigenschaften nicht initialisieren - sie sind immer noch in Ordnung, wenn sie auf private Mitglieder zugreifen (wenn ich mich recht erinnere), war vor langer Zeit.
Also, ein bisschen allgemeine Frage - aber in diesem Sinne hoffe, dass dies zumindest etwas verdeutlicht.
___ tag123poco ___ Bedeutet einfaches altes CLR-Objekt, ein einfaches Objekt, das keinem Objektmodell, keiner Konvention oder keinem Framework folgt. Bei Fragen zur POCO C ++ - Bibliothek (http://pocoproject.org) verwenden Sie bitte [poco-libraries].
___ answer15225624 ___
Aus Gründen der Vollständigkeit: EF5-Code weist zuerst (zumindest standardmäßig) private Eigenschaften einer Datenbanktabellenspalte zu.
Die folgende Klasse:
%Vor%
Mit dem folgenden DbContext:
%Vor%
Erzeugt eine People-Tabelle mit nur einer Spalte: %code%
Eine Eigenschaft des öffentlichen Schlüssels ist nach den ersten Konventionen des Standardcodes erforderlich. Wenn die Eigenschaft %code% in der Person-Klasse privat oder geschützt wäre, gibt das Entitätsframework die folgende Ausnahme aus:
%Vor%