0

我有以下 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>

问题是我正在处理遗留数据,也就是说,让我们说“不太理想”,并且一些记录的 ID 无效,所以我需要将not-found="ignore"属性放在包内的多对多标签上。我看不出有任何方法可以用 FNH 实现这一点。

.NotFound.Ignore()on the References()call,但没有 on the HasManyToManyCall。

有人能告诉我我错过了什么吗?即使在渲染后/在配置 NH 之前“注入”属性是一种技巧,我也只需要它工作即可。

提前致谢。

更新gcores 答案将不起作用,它会将其添加到错误的标签中,请参阅我对他的答案的评论以获取更多信息。

4

2 回答 2

8

我刚刚提交了一个添加NotFoundHasManyandHasManyToMany调用的更改。希望能帮助到你!

于 2009-03-14T23:26:22.347 回答
0

我不确定这一点,但没有 SetAttribute 吗?

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

更新:

对此感到抱歉,我知道有一个 SetAttribute 但我不确定它是否符合您的要求。

另一种选择是混合 Fluent NH 和 XML 映射,Fluent NH wiki解释了如何做到这一点,或者可以从 stackoverflow中看到这个答案。

于 2009-03-11T22:28:03.603 回答