2

这是我第一次使用 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();
    }
}

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

正如你所看到的,我通过了我的property1and property2。使用这两个属性,我想知道是否可以查询我的数据库以查找其属性value1value2参数具有相同值的对象。

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

4

1 回答 1

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();
    }
}
于 2013-06-23T13:10:52.403 回答