NH3.2 Отображение по коду с использованием условия where - PullRequest
4 голосов
/ 03 января 2012

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

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

 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?

1 Ответ

0 голосов
/ 08 мая 2014

Вы будете использовать метод фильтра для сопоставления «многие ко многим».

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");
                }));
...