我正在尝试在Fluent Nhibernate中设置多对多映射,该子映射附加到子表的where子句。
这基本上应该如何运作:
HasManyToMany(p => p.Images)
.Table("ProductImages")
.ParentKeyColumn("ProductID")
.ChildKeyColumn("ImageID")
.Where("ImageTypeID = 2");
ImageTypeID列位于Images表中,但NHibernate假设它是ProductImages表的一部分。知道如何指定这个吗?
谢谢!
答案 0 :(得分:10)
你可以。在Fluent NHibernate映射中使用 .ChildWhere :
HasManyToMany(p => p.Images)
.Table("ProductImages")
.ParentKeyColumn("ProductID")
.ChildKeyColumn("ImageID")
.ChildWhere("ImageTypeID = 2");
答案 1 :(得分:0)
据我所知,你不能。我不确定哪个地方在many-to-many协会上有效。
我会通过在IEnumerable<Image>
上创建一个扩展方法来处理这个问题,以便轻松过滤图像类型。然后你可以调用Images.Landscape(),例如,在任何Images集合上。