2

NHibernateSubQueryExpressionベースのクエリとは何か説明してもらえますか。具体的な例とのリンクは大歓迎です。

ありがとう

更新:Beachという名前のエンティティが1つあるとします。そのビーチには多くの画像があります。ビーチエンティティとその最初の画像を画像コレクションから選択したいと思います。選択した画像オブジェクトのみを持ち運びたい場合、または2番目のオブジェクトのみを選択してそのオブジェクトのみを持ち運びたい場合。

すべてのコレクションを初期化するImages.First()のようにアクセスしたくないので、さらに情報が必要な場合は、質問してください。

4

1 に答える 1

2
var query = session.QueryOver(() => vehicleAlias)
            .Left.JoinAlias(() => vehicleAlias.VehicleRegistrations, () => vehicleRegistrationAlias)
            .WithSubquery.WhereProperty(() => vehicleRegistrationAlias.RegistrationExpiryDate).Eq(
                QueryOver.Of(() => vehicleRegistrationAlias2)
                    .Where(() => vehicleRegistrationAlias2.Vehicle.Id == vehicleAlias.Id)
                    .Select(Projections.Max<VehicleRegistration>(ps => ps.RegistrationExpiryDate)));
        query.Left.JoinAlias(() => vehicleRegistrationAlias.VehicleRegistrants, () => vehicleRegistrantAlias)
            .Where(() => vehicleRegistrantAlias.Client.Id == clientId);

これは、私が自分の仕事のために書いたばかりのサブクエリであり、書くのに時間がかかりました。具体的に何を求めているのかわかりませんが、サンプルをご紹介します。ご不明な点がございましたら、お気軽にお問い合わせください。

.Select(Projections.Max(ps => ps.RegistrationExpiryDate)))この行は、サブクエリのすべての作業を実行します。最新の車両登録を選択します。車両登録エイリアス2は、サブクエリとしてクエリされるオブジェクトです。

したがって、これにより、車両の現在の車両登録のみが引き戻されます。1台の車両に多数の車両登録がある場合があります。その.Selectステートメントは、.OrderById.Desc.SelectTop(1)などに変更できます。

この編集がお役に立てば幸いです。

于 2012-06-02T13:47:36.387 に答える