【发布时间】:2010-04-14 17:07:27
【问题描述】:
对于 varchar 类型的列,我可以编写这样的搜索查询:
public IList<Order> GetByName(string orderName)
{
using (ISession session = NHibernateHelper.OpenSession())
{
return session.CreateCriteria<Order>().
Add(Restrictions.Like("Name", string.Format("%{0}%", orderName))).
List<Order>();
}
}
如何为具有 DateTime 类型的列实现类似的搜索查询?
public IList<Order> GetByDateTime(string str)
{
using (ISession session = NHibernateHelper.OpenSession())
{
return session.CreateCriteria<Order>()
.Add(Restrictions.Like(Projections.Cast(NHibernateUtil.String, Projections.Property("Created")),
'%' + str + '%'))
.List<Order>();
}
}
也就是说,如果该方法传递了日期和部分时间(例如“25.03.2010 19”),则显示所有订单都在这段时间内进行:
25.03.2010 19:22:00
25.03.2010 19:44:00
25.03.2010 19:59:00
【问题讨论】:
-
NHibernate 不能做任何用 sql 做不了的事情,所以你需要像 Aaronaught 建议的那样在 C# 中创建自己的日期解析函数
标签: nhibernate orm criteria sql-like