Bonjour,

J'ai un projet dans lequel j'utilise NHibernate pour venir interroger ma base postgre.
L'exemple suivant est associé à un filtre avec lequel je peux interroger ma base en fonction de plusieurs champs avec le comparateur =

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
using (ISession session = NHibernateSessionProvider.GetSession())
                    {
                        // Good thing, count and results are retrieve in the same transaction
                        using (ITransaction transaction = session.BeginTransaction())
                        {
                            // FutureValue is used to execute two requests in one database call (or round-trip) 
                            IFutureValue<int> count = session.CreateCriteria(typeof(TUser))
                                          .SetProjection(Projections.Count(Projections.Id()))
                                          .FutureValue<int>();
 
                            ICriteria userItems = session.CreateCriteria(typeof(TUser));
                            if (userId != "none")
                            {
                                userItems.Add(Restrictions.Eq("UserLogin", userId));
                            }
                            if (userEmail != "none")    
                            {
                                userItems.Add(Restrictions.Eq("UserEmail", userEmail));
                            }
                            if (groupName != "none")
                            {
                                userItems.Add(Restrictions.Eq("TGroup", userGroup));
                            }
                            userItems.CreateAlias("TGroup", "TGroup", JoinType.LeftOuterJoin);    // Load group info, even if there's no group attached, first parameter correspond to the table name, second parameter is the alias (same value for simplicity) 
                            userItems.Future<TUser>();
 
                            recordsCount = count.Value;
                            result = userItems.List<TUser>();
 
                            // End transaction
                            transaction.Commit();
                        }
                    }
Jusque là tout marche bien.

Je dois à présent trouver une solution pour permettre à ma recherche d'utiliser les expression régulière.

Je n'arrive pas trouver une solution de remplacement à Restrictions.Eq() qui permettrait de mettre en place une sorte de Regex.Match()

J'ai tenté avec Restrictions.Like() mais cela ne semble pas marcher et je suis un peu dépourvu...

Quelqu'un a-t-il eu à implémenter ceci?

Cordialement,
Christophe.