これは部分的にthisに関連しています。
Nhibernateクエリでリンクされた(HasMany)コレクションの結果を直接ソートする方法を知りたいのですが。Nhibernateクエリでリンクコレクションをソートする
ICriteria criteria = Session.CreateCriteria(typeof(PortalPage));
criteria.CreateAlias("PartialViews", "vc");
criteria.AddOrder(Order.Asc("vc.ColumnNumber"));
criteria.Add(Property.ForName("Url").Eq(pageUrl));
return criteria.UniqueResult<PortalPage>();
ORDER BYでselectを生成しますが、リンクされたコレクションの結果は順序付けされません。
結果が返された後でコレクションを並べ替えることを避けたいのですが(linqをオブジェクトに使用するなど)これが可能ですか?
UPDATE: スティーブは問題は次のようにマッピング内の順序属性をハードコーディングすることによって解決することができます示唆したように:
HasMany(x => x.PartialViews).KeyColumnNames.Add("PageId").AsBag().SetAttribute("order-by", "ColumnNumber");
スティーブ"ソート順。 Linq2Nhibernateや他の方法で何らかの動的結果を得ることは可能ですか?あなたが流暢なnhibernateで同じマッピングをどのように表現するでしょうか? – Ronnie
Ronnie、私はOrderByメソッドを使ってコレクションが返された後にソートせずに動的結果を得ることについてはわかりません。私はそれを確実に行う方法がないと思っています。それは、DDDオブジェクトモデルの子コレクションの性質によるものです。子コレクションに固有の並べ替え順序がない限り(SetやBagではなくListなど)データを取得するときに順序を指定できるように、モデリングの観点からは十分な意味を持ちます。私はリストマッピングのためにFluent構文をチェックしなければならないでしょう - 私がそれを見つけたら答えを更新します! –