NHibernate QueryOver(通用),告诉查询它应该使用的泛型类的哪些属性

时间:2013-06-23 12:53:29

标签: nhibernate nhibernate-criteria

这是我第一次参加NHibernate QueryOver,我试图以通用的方式进行。 到目前为止,这就是我所做的......

//Find one only
public T Find(string propertyName1, string propertyName2, string value1, string value2)
{
    using (var session = sessionFactory.OpenSession())
    using (var transaction = session.BeginTransaction())
    {
        return session.QueryOver<T>().Where(d => propertyName1 == value1)
                                     .And(f => propertyName2 == value2).SingleOrDefault();
    }
}

我不确定这是否正确。我想要做的是,使用泛型类,使用它的两个属性获取保存在数据库中的对象。

如您所见,我通过了property1property2。使用这两个属性,我想知道是否可以查询我的数据库以查找其属性与value1value2参数具有相同值的对象。

由于它是通用的,我需要找到一种方法来告诉我的查询应该使用哪些属性作为标准。这样做的正确方法是什么?谢谢你们。

1 个答案:

答案 0 :(得分:4)

也许您应该查看Criteria Queries而不是QueryOver:http://docs.huihoo.com/hibernate/nhibernate-reference-1.2.0/querycriteria.html

public T Find(string propertyName1, string propertyName2, string value1, string value2)
{
    using (var session = sessionFactory.OpenSession())
    using (var transaction = session.BeginTransaction())
    {
        return session.CreateCriteria(typeof(T)).Add(Expression.Eq(propertyName1, value1 ))
                                 .Add(Expression.Eq(propertyName2, value2 )).SingleOrDefault();
    }
}