Terrain:Filtrage DbSet non-générique expression construite dynamiquement
J'ai une classe mis en œuvre comme une façade dans le contexte Entity Framework DB. Il a été développé pour maintenir la compatibilité descendante, il imite la classe avec la même interface publique, mais utilise les DTO au lieu des entités EF.
Problème:
J'ai méthode suivante à l'intérieur de la classe décrite ci-dessus. Voir le code ci-dessous:
public IQueryable<T> FindBy<T>(Expression<Func<T, Boolean>> predicate) where T : BaseDto {
//GetDestinationType takes source type of some declared mapping and returns destination type
var entityType = Mapping.Mapper.GetDestinationType(typeof (T));
var lambda = Expression.Lambda(predicate.Body, Expression.Parameter(entityType));
// dbContext declared as class field and initialized in constructor
var query = dbContext.Set(entityType).Where(lambda); // <-- Cannot use non-generic expression/lambda
return query.ProjectTo<T>(mapper.ConfigurationProvider); }
- Je dois prendre l'expression en utilisant DTO comme dans le paramètre et retourner IQueryable où T: BaseDto suite
- je dois convertir prédicat d'entrée au même prédicat en utilisant des entités EF comme dans le paramètre
- J'ai besoin de filtrer EF DbSet non générique avec l'aide d'expression créée dynamiquement (prédicat)
question principale
Est-il possible de filtrer EF DBSet non générique avec l'aide d'expression créée dynamiquement (sous-jacente)
S'il vous plaît me donner un peu de colle ou d'autres instructions si je dois utiliser une autre approche.
Ceci utilise AutoMapper, correct? –
@ChrisHaines oui, correct –