0

これを適切に表現する方法がわかりません。特定のエンティティにバージョン管理された子を含めることができる既存のドメインを使用しています。子には独自のバージョン番号がありますが、最終的に、このバージョン番号は、関連付けられた親エンティティのコンテキストでのみ意味を持ちます。

public class Blog
{
    public virtual IList<VersionedItem> VersionedItems { get; set; }
    public virtual CurrentVersionedItem {
        get {
            return VersionedItems.OrderByDescending(x => x.Version).FirstOrDefault();
        }

    }
}

public class VersionedItem
{
    public virtual Blog { get;set; }
    public virtual int Version { get; set; }
    public virtual string Content { get; set; }
    public virtual int SomeNumber { get; set; }
}

そして、私が達成したいこと:

var blogs = Session.Query<Blog>(x=> x.CurrentVersionedItem.SomeNumber == 5)

NHibernate の IQueryable プロバイダーは寛容ですが、すべてを食べるわけではありません。「CurrentVersionedItem」プロパティを適切に解決する (流暢な) マッピングを定義する方法はありますか?

また、CurrentVersionedItem がこのシナリオで null を返す可能性があるという事実も認識しています (最初に機能した場合)。

4

1 に答える 1

0

なぜあなたはこのようにしないのですか:

var item = session.Query<VersionedItem>().FirstOrDefault(q => q.SomeNumber == 5);
Blog blog;
if (item != null)
    blog = item.Blog;
于 2012-10-08T19:24:28.377 に答える