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

标签 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 参数具有相同值的对象。

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

最佳答案

也许您应该查看 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();
    }
}

关于NHibernate QueryOver(通用),告诉查询应该使用通用类的哪些属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17260919/

相关文章:

nhibernate - 如何使用 NHibernate ICriteria API 表达这个 LINQ 查询?

c# - NHibernate MySQL 复合键

c# - 分区 c# 上的 Nhibernate 行号

c# - 如何获取 NHibernate 中的预计属性?

c# - NHibernate 查询使用 Criteria-api 返回未映射的对象

c# - NHibernate Filtered Child Collection Lazy Loaded even with eager fetch specified

nhibernate - 命名查询未知

nhibernate - 在 NHibernate QueryOver SelectGroup 中截断日期时间

c# - 使用 db 文件进行 sqlite 单元测试

c# - 使用无状态 session 延迟查找字典值