NHibernate - QBE和EnableLike()

时间:2009-09-25 14:07:11

标签: nhibernate

使用QBE和NHibernate时遇到问题。

以下是示例代码:

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

我期待的是这个例子&amp;条件将返回名字以“e”开头的所有人。但是,为了实现这一点,我必须在示例对象的属性中插入转义字符。像这样:

person.FirstName = "e%";

通过此修改,查询返回所需的结果。 难道“EnableLike”不应该照顾这个吗?

我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

我不是专家,但似乎你需要在你的enablelike()中添加一个matchmode,就像:

Example.Create(人).ExcludeProperty( “DATEOFBIRTH”) .EnableLike(NHibernate.Expression.MatchMode.Start) .IgnoreCase();

matchmode可以是:start,end,exact和anywhere

希望这个帮助