2009-11-14 8 views
1

Au lieu d'entrer dans le code, j'ai une question simple. Le comportement par défaut pour un simple un-à-plusieurs est qu'il insère l'enregistrement enfant puis met à jour la colonne clé étrangère avec la clé parent.nHibernate insère one-to-many mais ne met pas à jour

Est-ce que quelqu'un a déjà eu un un-à-plusieurs où l'objet enfant est inséré mais pas mis à jour entraînant une ligne dans ma table avec un null dans la colonne clé étrangère?

Je veux le comportement par défaut pour un standard un-à-plusieurs. Je ne veux pas avoir à ajouter le parent en tant que propriété à l'enfant.

Merci.

+0

reach4thelasers, désolé, aurait dû le mentionner. Mon sac a Cascade = "all-delete-orphelin". – TedTrippin

Répondre

0

Cela se passerait-il si vous n'avez pas cascade = « save-update » sur votre jeu/sac

ou si vous définissez la FlushMode à votre session « Aucun » ou "COMMIT et sauvé l'enfant à l'aide votre childRepository et négligé d'enregistrer l'objet contenant la collection en utilisant son référentiel.

0

Je pense que vous devez définir la référence parente dans l'élément enfant.

class Parent { 
    public virtual IList<Child> Children; 
} 

class Child { 
    public virtual Parent Parent; 
} 

Parent p = new Parent(); 
Child c = new Child(); 
c.Parent = p; 
p.Children = new List<Child>(); 
p.Children.Add(c); 

Maintenant, lorsque vous enregistrez cet objet transitoire p vous aurez le droit de clé étrangère dans la table des enfants.