2017-02-08 2 views
1

Derzeit ich den folgenden Codeblock bin mit DbSet dynamisch zu erstellen und Abrufen von Daten aus es -Verwendung where-Klausel in dynamischen dbset in Entity Framework

Type entityType = Type.GetType("MyProject.Models."+ EntityName + ", SkyTracker"); 
DbSet mySet = Db.Set(entityType); 

foreach (var entity in mySet) 
{ 

} 

ich eine Where-Klausel hier also .Where(m=>m.Id==1) verwenden möchten oder etwas so wie das.

Gibt es eine Möglichkeit, es zu tun?

Antwort

0

Sie sollten Generika hier verwenden, um es einfacher zu machen.

public DbSet<T> GetDbSet<T>() where T: class 
{ 
    DbContext db = new DbContext(""); 
    return db.Set<T>(); 
} 

public List<T> GetFilteredData<T>(Expression<Func<T, bool>> criteria) where T : class 
{ 
    DbContext db = new DbContext(""); 
    return db.Set<T>().Where(criteria).ToList(); 
} 

Und Sie können diese Methoden wie folgt aufrufen.

Expression<Func<AudioClass, bool>> criteria = ac => ac.Name == "jazz"; 

var result = GetFilteredData(criteria); 

Hier AudioClass ist nur ein Beispiel der Klasse I zum Beispiel erstellt.

Dies sollte Ihnen helfen, das gewünschte Verhalten zu implementieren.

Verwandte Themen