2009-03-11 4 views
0

Ich habe folgendes FNH-Mapping-Fragment:Fluent NHibernate HasManyToMany und NOTFOUND

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

, die die folgenden HBM produziert:

<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> 

Das Problem ist, dass ich mit Altdaten zu tun habe, die ist, lassen wir sagen einfach "weniger als ideal", und einige Datensätze haben ungültige IDs, also muss ich das Attribut not-found="ignore" auf den vielen-zu-vielen Tags innerhalb der Tasche setzen. Ich sehe keine Möglichkeit, dies mit FNH zu erreichen.

Es gibt die .NotFound.Ignore() über die References() Anruf, aber nicht über die HasManyToMany Anruf.

Kann mir jemand sagen, was ich vermisse? Selbst wenn es ein Hack ist, das Attribut zu "injizieren", nachdem es gerendert wurde/bevor die Konfiguration von NH in Ordnung ist, muss es nur funktionieren.

Vielen Dank im Voraus.

UPDATE gcores Antwort wird nicht funktionieren, fügt es dem falschen Tag hinzu, siehe meinen Kommentar zu seiner Antwort für weitere Informationen.

Antwort

8

Ich habe gerade eine Änderung vorgenommen, die NotFound zu den HasMany und HasManyToMany Aufrufen hinzugefügt. Ich hoffe es hilft!

0

Ich bin mir nicht sicher, aber gibt es kein SetAttribute?

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

UPDATE:

Tut mir leid, ich wusste, dass es ein SetAttribute war, aber ich war nicht sicher, ob es tat, was man wollte.

Eine andere Option wäre, Fluent NH und XML-Mappings zu mischen, Fluent NH wiki explains how to do this oder könnte dies answer from stackoverflow sehen.

+0

Eigentlich gcores, die nicht funktioniert, weil es das Attribut der Tasche hinzugefügt und das ist ungültig. Es muss auf dem "Vielen-zu-Vielen" in der Tasche gehen. –