2017-02-08 2 views
1

Actuellement, je suis en utilisant le bloc de code suivant pour créer DbSet dynamiquement et récupérer les données qu'il -Utiliser la clause where dans dbset dynamique dans Entity Framework

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

foreach (var entity in mySet) 
{ 

} 

Je voudrais utiliser une clause Where ici-à-dire .Where(m=>m.Id==1) ou quelque chose comme ça.

Y a-t-il un moyen de le faire?

Répondre

0

Vous devriez utiliser des génériques ici pour le rendre plus simple.

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(); 
} 

Et vous pouvez appeler ces méthodes comme suit.

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

var result = GetFilteredData(criteria); 

Ici AudioClass est juste un exemple de classe I créé par exemple.

Cela devrait vous aider à implémenter le comportement que vous voulez.