流利/ nhibernate映射问题

时间:2010-02-09 12:26:21

标签: vb.net nhibernate fluent-nhibernate

嘿伙计们,我非常感谢以下方面的帮助。我们正在使用流畅的控制nhibernate的映射,到目前为止一切顺利。我们基本上已经有一个基于计划的CMS系统,我在使用HasMany映射排除非实时子类别时遇到了问题。

所以我们有以下数据表,略微简化,映射到明智的BO。

[类别] ID 名称 PARENT_ID Schedule_Id

[时间表] ID IsPaused(位0/1) 开始日期 StopDate

CategoryMap看起来有点像这样(vb.net对不起!)。

Public Sub New()
    Id(Function(x) x.Id)
    Map(Function(x) x.Name)
    HasMany(Function(x) x.Children).Inverse().KeyColumn("Parent_id").Cascade.All()
    References(Function(x) x.Parent)
    References(Function(x) x.Schedule).ForeignKey("Schedule_id").Fetch.Join().Nullable()
End Sub

我想要做的是在HasMany映射上添加一个过滤器,但似乎无法获得我需要的工作位置。

有人可以指出我正确的方向吗?

非常感谢,

麦克

1 个答案:

答案 0 :(得分:0)

您没有显示子类,所以我不确定过滤器可能是什么。假设您要对IsActive位列进行过滤,映射将为:

Public Sub New()
    Id(Function(x) x.Id)
    Map(Function(x) x.Name)
    HasMany(Function(x) x.Children).Inverse().KeyColumn("Parent_id").Cascade.All()
        .Where("IsActive = 1")
    References(Function(x) x.Parent)
    References(Function(x) x.Schedule).ForeignKey("Schedule_id").Fetch.Join().Nullable()
End Sub

关键是Where子句包含一段SQL而不是HQL,所以你必须使用数据库字段名而不是属性名。