2009-04-22 6 views
0

Ich habe eine Reihenfolge Zuordnung mit vielen OrderItems. Das Mapping speichert sowohl den Auftrag als auch die Bestellartikel korrekt in der Datenbank, wenn ich nur den Auftrag speichere, aber wenn ich diesen Auftrag erneut lade, wird die Liste der Bestellartikel, die der Auftrag enthält, mit Nullwerten gefüllt (für alle anderen Bestellartikel in die Tabelle), bis sie das OrderItem erreicht, das den Fremdschlüssel des Orders besitzt. Die Gesamtanzahl der nullten Artikel ist also die Zeilenanzahl der Bestellartikel-Tabelle (ohne die tatsächlichen Bestellartikel, die sich auf den Auftrag beziehen). Hier ist meine Zuordnungen:nHibernate Null-Liste Werte auf eins zu viele

Auftrag:

<list name="OrderItems" table="OrderItems" cascade="all" inverse="true" > 
    <key column="OrderID"/> 
    <index column="OrderItemID" /> 
    <one-to-many class="OrderItem" not-found="ignore" /> 
</list> 

OrderItem:

<many-to-one name="Order" class="Order" column="OrderID" not-null="true" /> 

Hier ist der Klassenimplementierung des Ordens:

public class Order : { 
    private IList<OrderItem> orderItems = new List<OrderItem>(); 

ich gelesen, dass nHibernate nicht Listen als nicht unterstützt viele Teile einer Beziehung, aber das Speichern funktioniert korrekt, nur nicht die Last. Muss ich alles in Sets umwandeln, damit dies funktioniert?

Antwort

1

nur an der Spitze von meinem Kopf erinnere ich Probleme mit

<list> 

und Zuflucht zu

<bag> 

stattdessen auf die .NET IList-Schnittstelle abzubilden. Nicht sicher, ob das dein Problem löst.

Was kann hilfreich sein, wie die tatsächliche SQL zu suchen ist, dass die Datenbank von unterschiedlich trifft, was Sie erwarten Protokollierung durch Aktivierung, weil Ihre Order Sammlung Console.Out (see this blog)

+0

Geändert in Tasche und es hat super funktioniert !!! – Josh

0

Ist das nicht verursacht ist faul geladen? Wenn Sie lazy = false für Ihr Listen- (oder Taschen-) Mapping angeben, sollte dies nicht mehr der Fall sein.

Die Frage ist natürlich, möchten Sie die OrderItems faul laden, oder nicht? :)