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();
    }
}

これが正しいかどうかはわかりません。私がやろうとしているのは、ジェネリック クラスを使用して、2 つのプロパティを使用してデータベースに保存されたオブジェクトを取得することです。

ご覧のとおり、 と を渡しましproperty1property2value1これら 2 つのプロパティを使用して、データベースにクエリを実行し、プロパティがおよびvalue2パラメータと同じ値を持つオブジェクトを見つけることができるかどうか疑問に思っています。

これは一般的なものであるため、どのプロパティを基準として使用する必要があるかをクエリに伝える方法を見つける必要があります。これを行う正しい方法は何ですか?みんなありがとう。

4

1 に答える 1

4

おそらく、QueryOver の代わりに Criteria Queries を参照する必要があります: 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 に答える