2009-04-22 8 views
0

J'ai un mappage d'ordre avec de nombreux articles de commande. Le mappage enregistre correctement à la fois les objets Order et OrderItems dans la base de données lorsque j'effectue une sauvegarde uniquement sur l'ordre, mais lorsque je recharge cet ordre, la liste des éléments de commande contient des valeurs null (pour tous les autres éléments de la commande la table) jusqu'à ce qu'il atteigne le OrderItem qui a la clé étrangère de l'Ordre. Ainsi, le nombre total d'éléments de commande null est le nombre de lignes de la table OrderItems (sans les éléments de commande réels liés à la commande). Voici mes applications:nHibernate Valeurs de liste nulles sur un-à-plusieurs

Ordre:

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

est ici la mise en œuvre de la classe de l'Ordre:

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

je lis que NHibernate ne supporte pas les listes comme la beaucoup de partie d'une relation, mais la sauvegarde fonctionne correctement, mais pas la charge. Dois-je tout convertir en Ensembles pour que cela fonctionne?

Répondre

1

Juste du haut de ma tête, je me souviens d'avoir des problèmes avec

<list> 

et eu recours à

<bag> 

au lieu de la carte à l'interface IList .NET. Je ne sais pas si cela va résoudre votre problème.

Ce qui peut être utile est de voir comment le SQL réel qui frappe la base de données est différent de ce que vous attendez en permettant l'exploitation forestière à Console.Out (see this blog)

+0

Modifié pour le sac et ça a bien fonctionné !!! – Josh

0

ne serait-ce dû au fait que votre collection OrderItems est paresseux chargé? Si vous spécifiez lazy = false sur votre mappage de liste (ou de sac), cela ne devrait plus être le cas. La question hors cours est, voulez-vous charger paresseux le OrderItems, ou pas? :)

Questions connexes