Wie ich Lesen kann EF DbContext Metadaten programmatisch?
Habe ich Anwendung, die EF CodeFirst 5-dll (ver 4.4.0.0, auf .net 4.0).
Ich muss in der Lage sein zu Lesen von entity-Metadaten, so dass ich kann, für einen bestimmten Eintrag, geben Sie folgende Informationen bekommen:
- die Eigenschaften sind eines-viele-Beziehungen (referenzierten Entitäten)
- welche Eigenschaften sind viele-eins-Beziehungen (Auflistungen von Entitäten verweisen auf aktuelle)
- auch schön, aber nicht zwingend notwendig: welche Eigenschaften sind viele-viele-Beziehungen (Sammlungen von Beziehungen)
Bekomme ich diese info schreiben foreach-Schleifen auf Listen von Eigenschaften, und dann "erkennen" Sie, indem Sie sich auf alle Referenzen als virtuelle, aber ich habe das Gefühl, dass nicht "richtig". Ich weiß, dass EdmxWriter
können vorsehen, dass die Informationen im xml-format, aber es tut dies durch den Zugriff auf InternalContext, die nicht öffentlich zugänglich und ich will mich stark typisierte Listen/arrays, die direkt, ohne Verwendung von xml. Die API sollte ich verwenden (wenn es eine ist für dies, es scheint, dass ich kann es nicht finden)?
- Es gibt nun Pläne zur Verbesserung der Metadaten-API: entityframework.codeplex.com/workitem/1471 Mehr hier: romiller.com/2013/09/24/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gorane, das sollte Ihnen den Einstieg...
(Ich habe noch nicht viel gespielt mit ihm - es dauert ein bisschen Experimentieren in den debugger, um zu sehen, welche Eigenschaften /info und wie man es bekommt)
genauer gesagt...
Manche dieser Eigenschaften scheinen nicht ausgesetzt werden, um 'öffentlichkeit', so würden Sie verwenden müssen, um Reflexions - oder finden Sie einige intelligentere Weise - aber viel info drin ist.
Und ein paar mehr Infos in diesen links...
Wie man erste EntityKey Name für eine Entität in EF4
Wie kann ich extrahieren Sie die Datenbank, Tabelle und Spalte name für eine Eigenschaft auf ein EF4 Entität?
BEARBEITEN:
Mit Ihrer Liste von navigationProperties als Ausgangspunkt, ich habe alles, was ich brauchte, wie diese:
CreateLambdaExpression-Methode ist nicht meine Höflichkeit, credits gehen an Jon Skeet, code wurde erstellt mit Hilfe von diese Antwort
Hier ist mein CreateLambdaExpression Methode:
ForeignKeyDependents
undForeignKeyPrincipals
gekennzeichnet istinternal
imEntitySet
für EF6.CreateLambdaExpression
hier dienen? Wenn Sie wollen einfach nur gefilterte Listen vonNavigationProperties
ist es überhaupt erforderlich? Wenn ich könnte sehen Sie den Ausdruck Baum Sie endete damit, dass ich in der Lage sein, um es besser zu verstehen. Konnte Sie Bearbeiten die Antwort wieder, um die endgültigeCreateLambdaExpression
code, den Sie am Ende mit? Es ist mir noch immer unklar. Danke.