Nhibernate 如何在NH3.2中使用多对多关系实现.ChildWhere()映射

Nhibernate 如何在NH3.2中使用多对多关系实现.ChildWhere()映射,nhibernate,fluent-nhibernate,nhibernate-mapping,fluent-nhibernate-mapping,conform,Nhibernate,Fluent Nhibernate,Nhibernate Mapping,Fluent Nhibernate Mapping,Conform,我有以下FNH映射: public class ItemMap : ClassMap<Item> { public ItemMap () { this.HasManyToMany(a => a.ChildItems).ChildWhere("IsDeleted = 0").AsSet(); } } public class ItemMap : ClassMap<Item> { public ItemMap () {

我有以下FNH映射:

public class ItemMap : ClassMap<Item>
{
   public ItemMap ()
   {
       this.HasManyToMany(a => a.ChildItems).ChildWhere("IsDeleted = 0").AsSet();
   }
}
public class ItemMap : ClassMap<Item>
{
   public ItemMap ()
   {
      this.HasManyToMany(a => a.ChildItems).Where("IsDeleted = 0").AsSet();
   }
}
使用
的hbm文件的结果。其中(“IsDeleted=0”)
为:

<hibernate-mapping>
  <class name="Item" table="Item">
    <set name="ChildItems" table="ItemsToChildItems">
      ...
      <many-to-many class="ChildItem" where="IsDeleted = 0">
        <column name="ChildItemId" />
      </many-to-many>
    </set>
  </class>
</hibernate-mapping>
<hibernate-mapping>
  <class name="Item" table="Item">
    <set name="ChildItems" table="ItemsToChildItems" where="IsDeleted = 0">
      ...
      <many-to-many class="ChildItem">
        <column name="ChildItemId" />
      </many-to-many>
    </set>
  </class>
</hibernate-mapping>

...

谁有类似的问题或可以提供解决方案?我需要帮助

我也遇到了同样的问题,我找到了解决办法:

分3步解决:

1) 将新接口方法添加到IMANYTOMANYAPPER接口:

公共接口imanytomanyapper:icolumnsapper
{
Where无效(字符串SQLWHERE条款); }

2) 在ManyToManyCustomizer类中实现新方法:

public void Where(字符串sqlwhere子句)
{ 
AddCustomizer(propertyPath,(imanytomanyapper x)=>x.Where(sqlwhere子句));
}

3) 在ManyToManyMapper类中实现新方法:

public void Where(字符串sqlwhere子句)
{ 
manyToMany.where=sqlwhere子句;
}

<hibernate-mapping>
  <class name="Item" table="Item">
    <set name="ChildItems" table="ItemsToChildItems">
      ...
      <many-to-many class="ChildItem" where="IsDeleted = 0">
        <column name="ChildItemId" />
      </many-to-many>
    </set>
  </class>
</hibernate-mapping>
<hibernate-mapping>
  <class name="Item" table="Item">
    <set name="ChildItems" table="ItemsToChildItems" where="IsDeleted = 0">
      ...
      <many-to-many class="ChildItem">
        <column name="ChildItemId" />
      </many-to-many>
    </set>
  </class>
</hibernate-mapping>