2009-09-25 7 views
2

J'ai un problème avec QBE avec NHibernate.NHibernate - QBE et EnableLike()

Voici un exemple de code:

Person person = new Person(); 
person.FirstName = "e"; 
using (ISession session = SessionFactory.CreateSession()) 
{ 
    Example example = Example.Create(person).ExcludeProperty("DateOfBirth").EnableLike().IgnoreCase(); 
    IList<Person> people = session.CreateCriteria<Person>().Add(example).List<Person>(); 
    return people; 
} 

Ce que je pense est que cet exemple & critères renverra toutes les personnes dont le nom commence par un « e ». MAIS, pour accomplir ceci, j'ai dû insérer un caractère d'échappement dans la propriété de l'objet exemple. Comme ceci:

person.FirstName = "e%"; 

Avec cette modification, la requête renvoie les résultats souhaités. Le "EnableLike" ne devrait-il pas en prendre soin?

Qu'est-ce que je fais mal?

Merci!

Répondre

2

je ne suis pas un expert, mais vous semble besoin de mettre un matchmode dans votre enablelike(), comme:

Example.Create (personne) .ExcludeProperty ("DateOfBirth") .enableLike (NHibernate.Expression .MatchMode.Start) .IgnoreCase();

le matchmode peut être: début, fin, exacte et partout

espoir cette aide