使用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”不应该照顾这个吗?
我做错了什么?
谢谢!
答案 0 :(得分:2)
我不是专家,但似乎你需要在你的enablelike()中添加一个matchmode,就像:
Example.Create(人).ExcludeProperty( “DATEOFBIRTH”) .EnableLike(NHibernate.Expression.MatchMode.Start) .IgnoreCase();
matchmode可以是:start,end,exact和anywhere
希望这个帮助