这是我第一次参加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();
}
}
我不确定这是否正确。我想要做的是,使用泛型类,使用它的两个属性获取保存在数据库中的对象。
如您所见,我通过了property1
和property2
。使用这两个属性,我想知道是否可以查询我的数据库以查找其属性与value1
和value2
参数具有相同值的对象。
由于它是通用的,我需要找到一种方法来告诉我的查询应该使用哪些属性作为标准。这样做的正确方法是什么?谢谢你们。
答案 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();
}
}