Je crée une méthode qui peut créer un filtre compris par NHibernate (par filtre, je veux dire un ensemble d'objet ICriteria par exemple) de mon objet filtre abstrait.Est-il possible de créer ICriteria/ICriterion à partir de LINQ ou HQL?
public static IEnumerable<ICriterion> ToNhCriteria(this MyCriteria criteria)
{
// T4 generated function
// lots of result.Add(Expression.Or(Expression.Eq(),Expression.Eq)) expression trees - hard to generate
// Is there a way to generate HQL/Linq query here istead?
}
alors je veux faire quelque chose comme
session.CreateCriteria<Entity>().Add(myCriteria.ToNhCriteria())
pour filtrer les entités. Le problème est que l'utilisation d'expression. méthodes (Expression.Or etc) est assez fastidieux (la méthode est générée et j'ai plusieurs ou des instructions qui doivent être jointes dans une expression en quelque sorte). Existe-t-il un moyen d'éviter d'utiliser Expression.Or() et de créer ICrietrion/ICriteria en utilisant LINQ ou HQL?
Utilisez-vous T4 au moment de la conception ou de l'exécution pour générer ICriteria? Si au moment de la conception, qu'est-ce qui vous empêche d'utiliser T4 pour générer HQL (ou Linq) à la place? –
Oui, j'utilise T4 en temps de conception et comme vous avez suggéré je pourrais utiliser HQL ou Linq au lieu de ICriteria. Le problème a été causé par mon manque de connaissances plutôt que par des limitations du cadre. Actuellement, j'utilise ICriteria API, car il semble être plus lisible pour quelqu'un qui lit T4 et cela fonctionne correctement maintenant. – adrin