Fluent NHibernate中的Where子句多对多

时间:2010-02-10 16:06:13

标签: c# .net nhibernate orm fluent-nhibernate

我正在尝试在Fluent Nhibernate中设置多对多映射,该子映射附加到子表的where子句。

这基本上应该如何运作:

HasManyToMany(p => p.Images)
  .Table("ProductImages")
  .ParentKeyColumn("ProductID")
  .ChildKeyColumn("ImageID")
  .Where("ImageTypeID = 2");

ImageTypeID列位于Images表中,但NHibernate假设它是ProductImages表的一部分。知道如何指定这个吗?

谢谢!

2 个答案:

答案 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集合上。