嘿伙计们,我非常感谢以下方面的帮助。我们正在使用流畅的控制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映射上添加一个过滤器,但似乎无法获得我需要的工作位置。
有人可以指出我正确的方向吗?
非常感谢,
麦克
答案 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,所以你必须使用数据库字段名而不是属性名。