Weiß jemand, wie man die Schemainformationen aus einem edmx generierten Entity Framework herausholt?
Insbesondere möchte ich den Fremdschlüssel für eine Entität durchqueren, für die ich momentan keine Instanz habe, und die Fremdschlüsselbeziehungen abfragen, und ich möchte dies über eine Reflexion tun, die generisch ist auf jede Entitätsklasse ohne benutzerdefinierten Code jedes Mal angewendet.
EG: Mein Schema hat 2 Klassen, Benutzer und Gruppe. Ich habe die Nummer "42", die ich kenne, stammte von der "GroupId" -Eigenschaft einer "User" -Entität, aber im Moment kann ich nicht herausfinden, wie diese "GroupId" -Eigenschaft von "User" Fremdschlüssel zu erkennen ist die Entität "Group" durch ihre Eigenschaft "GroupId".
Habe die Lösung gefunden. Die relevanten Informationen finden Sie in der Eigenschaft RelationshipManager
des Kontextes. Rufen Sie GetAllRelatedEnds()
auf und suchen Sie dann nach Typen vom Typ AssociationSet
.
Das ElementType
des Assoziationssets enthält dann eine IsForeignKey
-Eigenschaft und auch ein Array ReferentialConstraints
mit Eigenschaften für jede Bedingung ToRole
, ToProperty
, FromRole
bzw. FromProperty
und die RelationshipMultiplicity
auf der ToRole
/ FromRole
kann verwendet werden, um die Richtung der Fremdschlüsselbeziehung zu bestimmen.
Wenn ich all diese Daten genommen und die GetObjectByKey
-Methode des Kontexts verwendet habe, konnte ich die für einen Kontext definierten Fremdschlüsselbeziehungen ohne die zugehörige Entität programmatisch durchlaufen.
Tags und Links c# entity-framework-4