Wie kann ich alle DbSets finden, deren generische Typen von einem bestimmten Basistyp abgeleitet sind?

7

Wie kann ich eine List aller DbSets erhalten, wo der enthaltene Typ von IncomingServiceOrderBase abgeleitet wird?

Ich kann Reflektion verwenden, um alle DbSets zu erhalten, aber wie filtere ich sie auf diejenigen, die einen abgeleiteten Typ enthalten?

Kontext

%Vor%

Modell

%Vor%     
Benjamin 08.05.2012, 00:17
quelle

2 Antworten

18

Sie können so etwas tun:

%Vor%

(dies gibt die Namen der Eigenschaften zurück; wenn Sie die tatsächlichen DbSet-Instanzen haben möchten, ersetzen Sie p.Name durch p.GetValue(context, null) )

    
Thomas Levesque 08.05.2012, 00:59
quelle
2

typeof(BaseType).IsAssignableFrom(DerivedType) . Es wird wahr / falsch zurückgegeben. Siehe Ссылка

Um DbSet<T> in T umzuwandeln (damit Sie diesen Vergleich durchführen können), nehmen Sie den Typ jeder Eigenschaft und tun Sie etwas wie folgt:

%Vor%     
robrich 08.05.2012 00:52
quelle