Как сопоставить этот словарь с новейшей версией fluentNHibernate? - PullRequest
0 голосов
/ 16 сентября 2011

У меня есть еще один вопрос.Я обновился до FluentNHibernate и теперь у меня возникла проблема с моими диктаторскими отображениями.

Класс, который я пытаюсь отобразить, имеет следующее свойство

IDictionary LohnParameter

Отображение выглядит следующим образом

HasMany(x => x.LohnParameter) 
     .ForeignKey("cat_condition_version__id") 
     .DictionaryKey("wrd_cntry__id") 
     .OneToMany<boLohnartEigenschaften>() 
     .Not.Lazy() 
     .Inverse() 
     .Cascade.AllDeleteOrphan();

Полученная hbm.xml выглядит так:

<map cascade="all-delete-orphan" inverse="true" lazy="false" name="LohnParameter" table="boLohnartVersionLohnParameter" mutable="true">
        <key>
          <column name="cat_condition_version__id" />
        </key>
        <index-many-to-many class="proSoft.Office.Model.Business.Welt.boLand, proSoft.Office.Model.Business, Version=0.1.19.20243, Culture=neutral, PublicKeyToken=b0e4f89242e69335">
          <column name="wrd_cntry__id" />
        </index-many-to-many>
        <one-to-many class="proSoft.Office.Model.Business.Konditionen.boLohnartEigenschaften, proSoft.Office.Model.Business, Version=0.1.19.20243, Culture=neutral, PublicKeyToken=b0e4f89242e69335" />
      </map>

В новой версии компилятор жалуется, что свойство ForeignKey отсутствует.Я попробовал сейчас все, но я не могу заставить его работать должным образом.Моя последняя попытка была:

  HasMany(x => x.LohnParameter) 
     .AsMap<boCountry>( 
       index => index.Column("wrd_cntry__id").Type<boCountry>(), 
       element => element.Type<boLohnartEigenschaften>() 
     ) 
     .KeyColumn("cat_condition_version__id") 
     .Not.LazyLoad() 
     .Inverse() 
     .Cascade.AllDeleteOrphan();

Но ошибка, которую я всегда получаю:

{"Не удалось определить тип для: proSoft.Office.Model.Business.Welt.boCountry, proSoft.Office.Model.Business, версия = 0.1.14.556, культура = нейтральная, PublicKeyToken = b0e4f89242e69335, для столбцов: NHibernate.Mapping.Column (wrd_cntry__id) "}

Понятия не имею, что делать.

С уважением

Кристиан Эрхардт

Ответы [ 2 ]

1 голос
/ 16 сентября 2011

Я думаю, вы ищете это

HasMany(x => x.LohnParameter) 
    .AsEntityMap("wrd_cntry__id")
0 голосов
/ 16 сентября 2011

Спасибо за подсказку, это был правильный путь.Правильное отображение:

     HasMany(x => x.LohnParameter)
        .KeyColumn("cat_condition_version__id")
        .AsEntityMap("wrd_cntry__id")         
        .Not.LazyLoad()
        .Inverse()
        .Cascade.AllDeleteOrphan();

В результате получается точно такой же файл hbm.xml.

Спасибо!

...