Lesen Sie Fremdschlüssel-Metadaten programmatisch mit Entity Framework 4

7

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".

    
fyjham 08.12.2010, 04:08
quelle

2 Antworten

7

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.

    
fyjham 16.12.2010, 05:59
quelle
21

Sie können den folgenden Ansatz verwenden -

%Vor%     
Ashraf Alam 14.01.2011 22:27
quelle

Tags und Links