NHibernate :(流畅)映射/查询基于访问已映射的集合属性的Getter

时间:2012-10-08 15:47:20

标签: c# nhibernate orm fluent-nhibernate mapping

我不知道如何恰当地说出这句话。我正在使用预先存在的域,其中某些实体可以包含版本化的子项。孩子们负责他们自己的版本号,但最终,这个版本号只在附加的父实体的上下文中有意义。

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(如果它首先起作用的话)。

1 个答案:

答案 0 :(得分:0)

你为什么不这样做:

var item = session.Query<VersionedItem>().FirstOrDefault(q => q.SomeNumber == 5);
Blog blog;
if (item != null)
    blog = item.Blog;