2009-07-16 3 views
1

Ich habe folgende Zuordnungen:NHibernate Sammlung Mapping wirft ‚konnte nicht Objekt oder eine Sammlung geladen oder initialisiert‘

<bag name="BList" table="A_TABLE" inverse="true" lazy="false" cascade="all-delete-orphan"> 
    <key column="A_ID"/> 
    <one-to-many 
    class="B, Model" /> 
</bag> 

Und

<many-to-one name="A" 
      class="A, Model" 
      column="A_ID" 
      not-null="true" /> 

Performing Einsatz und Updates arbeiten gut (beim Hinzufügen und Entfernen aus der Sammlung), aber das Holen der Objekte führt immer zu Ausnahmen.

failed: NHibernate.Exceptions.GenericADOException : could not load an entity: [Model.B#5816932][SQL: SELECT ...] 
    ----> System.NullReferenceException : Object reference not set to an instance of an object. 

OR ...

NHibernate.Exceptions.GenericADOException : could not initialize a collection: [Model.A.BList#1364389][SQL: ...] 
    ----> System.NullReferenceException : Object reference not set to an instance of an object. 

... je nachdem, welches Objekt Sie holen. Ich bin sicher, dass ich hier eine einfache Sache vermisse, weil es früher funktionierte, bevor ich die cascade = "all-delete-orphan" implementierte.

Jede Hilfe wäre sehr geschätzt.

+0

Könnten Sie Ihre Einheiten und die Abfragen schreiben, die Versagen. – Nigel

Antwort

0

Es stellte sich heraus, dass das Mapping selbst korrekt war. Das Problem trat im Konstruktor von 1 der Objekte auf ...

Ich hatte einen parameterlosen Standardkonstruktor, der eine Überladung zu einem anderen Konstruktor war.

public B() : this(null) { } 

Die anderen constructer hatten dann so etwas wie

public B(A c) 
{ 
    A= c; 
} 

So oder so, die Überlastung auf dem Konstruktor zu entfernen gemacht all meine Prüfungen bestehen: D