Ich versuche herauszufinden, wie Sie Werte aus einer Nachschlagetabelle mit Generics auswählen und zur Laufzeit den Entitätsnamen als Zeichenfolge übergeben. Hier ist was ich bisher habe. Das Problem, das ich habe, ist in den "var codes = Select();" Linie. Wie Sie sich vorstellen können, ist der Compiler nicht glücklich und gibt mir einen Fehler von: classType ist eine Variable, wird aber als Typ verwendet. Ich bin mir nicht sicher, was ich tun oder wie ich es beheben soll. Ich kann eine Schnittstelle oder einen Klassennamen nicht fest codieren, da ich die Signatur der Codetabelle erst dann kenne, wenn die Zeichenfolge aufgelöst ist. Jede Anleitung würde sehr geschätzt werden!Wie verwende ich Generics, um auf eine Entität in EF 6 zuzugreifen?
public void GetTableNameObject(string TableName)
{
dynamic classType = Activator.CreateInstance(Type.GetType(TypeName));
var codes = Select<classType>();
}
public IQueryable<TItem> Select<TItem>() where TItem : class, new()
{
PropertyInfo property = GetDbSet(typeof(TItem));
DbSet<TItem> set = property.GetValue(_context, null) as DbSet<TItem>;
return set;
}
private PropertyInfo GetDbSet(Type itemType)
{
var properties = typeof(CodeTableContext).GetProperties().Where(item => item.PropertyType.Equals(typeof(DbSet<>).MakeGenericType(itemType)));
return properties.First();
}
Unterscheiden sich Ihre Tabellennamen von Entitätsnamen? und was meinst du mit "Lookup-Tabelle"? – Ashkan