Свободный NHibernate HasManyToMany и NotFound - PullRequest
0 голосов
/ 12 марта 2009

У меня есть следующий фрагмент отображения FNH:

HasManyToMany((c) => c.Plaintiffs)
    .LazyLoad()
    .WithTableName("invoicePlantiff")
    .WithChildKeyColumn("PersonReferenceID")
    .WithParentKeyColumn("invoiceID")
    .FetchType.Join();

Который производит следующий HBM:

<bag name="Plaintiffs" access="iServe.Design.CslaNHibernate.CslaChildPropertyAccessor, iServe, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" lazy="true" table="invoicePlantiff">
  <key column="invoiceID" />
  <many-to-many column="PersonReferenceID" class="iServe.PersonReference, iServe, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" fetch="join" />
</bag>

Проблема в том, что я имею дело с унаследованными данными, скажем, «меньше идеального», и некоторые записи имеют недопустимые идентификаторы, поэтому мне нужно поместить атрибут not-found="ignore" в тег «многие ко многим» внутри сумки. Я не вижу никакого способа достичь этого с FNH.

В вызове References() есть .NotFound.Ignore(), но в вызове HasManyToMany нет.

Может кто-нибудь сказать мне, что мне не хватает? Даже если это «хак» - «вставить» атрибут после его рендеринга / перед настройкой NH, все в порядке, мне просто нужно, чтобы он работал.

Заранее спасибо.

ОБНОВЛЕНИЕ gcores ответ не будет работать, он добавляет его к неправильному тегу, см. Мой комментарий к его ответу для получения дополнительной информации.

Ответы [ 2 ]

8 голосов
/ 15 марта 2009

Я только что совершил изменение, которое добавляет NotFound к вызовам HasMany и HasManyToMany. Надеюсь, это поможет!

0 голосов
/ 12 марта 2009

Я не уверен в этом, но разве нет SetAttribute?

HasManyToMany((c) => c.Plaintiffs)
.LazyLoad()
.WithTableName("invoicePlantiff")
.WithChildKeyColumn("PersonReferenceID")
.WithParentKeyColumn("invoiceID")
.FetchType.Join()
.SetAttributte("not-found", "ignore");

UPDATE:

Извините, я знал, что был SetAttribute, но я не был уверен, что он сделал то, что хотел.

Другим вариантом может быть смешивание отображений Fluent NH и XML, вики Fluent NH объясняет, как это сделать или может видеть этот ответ от stackoverflow .

...