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()オンザコールReferences()はありませんHasManyToMany

誰かが私に欠けているものを教えてもらえますか? 属性がレンダリングされた後/NHを構成する前に属性を「注入」するのがハックであっても、それが機能する必要があります。

前もって感謝します。

UPDATE gcores の回答は機能しません。間違ったタグに追加されます。詳細については、彼の回答に関する私のコメントを参照してください。

4

2 に答える 2

8

との呼び出しに追加NotFoundする変更をコミットしました。それが役に立てば幸い!HasManyHasManyToMany

于 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 に答える