2012-01-03 2 views
4

Я попытался определить отношение «многие ко многим» с предложением «где», используя MappingByCode от NH3.2, но я не знаю, как это сделать.NH3.2 Сопоставление по коду с использованием фразы «где»

С FluentNHibernate я могу использовать метод:

public class ProcedureMap : ClassMap<Procedure> 
{ 
     public ProcedureMap() 
     { 
      this.HasManyToMany(a => a.FormTemplates).ChildWhere("IsDeleted = 0").AsSet(); 
     } 
} 

Этот код будет генерировать следующий HBM:

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> 
    <class xmlns="urn:nhibernate-mapping-2.2" name="Procedure" table="Procedure"> 
    <set name="FormTemplates" table="ProceduresToFormTemplates"> 
     <key foreign-key="FK_Procedures_FormTemplates"> 
     <column name="ProcedureId" /> 
     </key> 
     <many-to-many class="FormTemplate" where="IsDeleted = 0"> 
     <column name="FormTemplateId" /> 
     </many-to-many> 
    </set> 
    </class> 
</hibernate-mapping> 

Как я могу получить то же самое отображение с помощью MappingByCode из NH3.2?

ответ

0

Вы должны использовать метод фильтрации для отображения многих ко многим.

this.Bag(
    x => x.Procedure, 
    m => 
    { 
     m.Table("Procedure"); 
     m.Key(k => k.Column("ProcedureId")); 
     m.Filter("NoDeleted", mapper => mapper.Condition("IsDeleted = 0")); 
    }, 
    x => x.ManyToMany(
      map => 
       { 
        map.Column("FormTemplateId"); 
       })); 
Смежные вопросы