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 回答