NHibernate - 如何编写条件查询以反映列是否具有空值

时间:2012-07-23 04:15:44

标签: c# nhibernate nhibernate-criteria

我正在编写一个包含项目列表的屏幕。每个项目包括一个按钮,用户可以在其中弹出一个对话框,以输入或读取(他们先前输入的)对所述订单项的反馈。因为反馈包含大量的文本数据,并且每页可能有很多行项目,所以我使用AJAX按需加载反馈。

我想根据用户是否留下反馈,为订单项的反馈按钮设置不同的图标。目标是让用户了解尚未输入的内容。我使用NHibernate作为我的ORM。是否可以编写一个NHibernate查询,其中包含一个布尔值,指示数据库列是否为空?否则,是否可以使用NHibernate返回每行的字符串长度?我正在使用Criteria API,但任何帮助将不胜感激。

基本上我正在尝试这样做:

SELECT id, name, has_feedback is null as has_preview FROM my_table;

1 个答案:

答案 0 :(得分:1)

可以使用nhibernate函数获取字符串长度

session.QueryOver<Foo>()
    .Select(Projections.SqlFunction("length", NHibernateUtil.Int32, Projections.Property<Foo>(foo => foo.Name)))
    .List();

session.CreateCriteria<Foo>()
    .SetProjection(Projections.SqlFunction("length", NHibernateUtil.Int32, Projections.Property(Name)))
    .List<int>();