流利的NHibernate HasManyToMany和NotFound

时间:2009-03-11 22:12:52

标签: nhibernate fluent-nhibernate nhibernate-mapping

我有以下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()电话上有References(),但HasManyToMany电话上没有。

有人可以告诉我我错过了什么吗?即使在渲染属性之后“注入”该属性/在配置NH之前很好,我只需要它就可以工作。

提前致谢。

更新 gcores回答无效,会将其添加到错误的代码中,有关详情,请参阅我对其回答的评论。

2 个答案:

答案 0 :(得分:8)

我刚刚提交了一项更改,将NotFound添加到HasManyHasManyToMany来电。希望它有所帮助!

答案 1 :(得分: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 explains how to do this或者可以看到answer from stackoverflow