NHibernate Criteria - How to filter on combination of properties

后端 未结 2 1633
太阳男子
太阳男子 2020-12-16 08:53

I needed to filter a list of results using the combination of two properties. A plain SQL statement would look like this:

SELECT TOP 10 *
FROM Person
WHERE F         


        
2条回答
  •  离开以前
    2020-12-16 09:23

    You can do one of the following:

    • If you always work with the full name, it's probably best to have a single property
    • Create a query-only property for that purpose (see http://ayende.com/Blog/archive/2009/06/10/nhibernate-ndash-query-only-properties.aspx)
    • Do the query in HQL, which is better suited for free-form queries (it will probably be almost the same as your SQL)
    • Use a proper entity-based Criteria:

    Session.CreateCriteria()
           .Add(Restrictions.Like(
                Projections.SqlFunction("concat",
                                        NHibernateUtil.String,
                                        Projections.Property("FirstName"),
                                        Projections.Constant(" "),
                                        Projections.Property("LastName")),
                term,
                MatchMode.Anywhere))
    

提交回复
热议问题