2010-07-14 4 views
0

J'ai une page Web qui utilise NHibernate pour charger un objet de domaine. L'état de l'objet est ensuite stocké dans les contrôles de page et lorsque l'utilisateur clique sur le bouton Enregistrer, un nouvel objet est créé et ses propriétés (y compris l'ID) sont remplies à partir des contrôles de page. J'appelle alors session.Save() sur l'objet. Cela signifie pour moi que NHibernate devrait utiliser un UPDATE plutôt qu'un INSERT, parce que la propriété Id a été définie et diffère de la valeur non-enregistrée. Cependant, NHibernate tente de l'insérer.Pourquoi NHibernate ne réalise-t-il pas que mon objet de domaine a besoin d'être mis à jour, pas d'insérer?

J'ai inclus la partie du fichier de mappage relatif à l'Id ci-dessous:

<id name="Id" column="StoredWillId" unsaved-value="0"> 
    <generator class="native" /> 
</id> 

Quelqu'un peut-il expliquer ce qui se passe ici?

Merci

David

Répondre

3

Appel Session.saveOrUpdate(). session.Save() insère, update.Update(), session.SaveOrUpdate() enregistre si l'ID est 0, sinon il est mis à jour.

+0

Ah! Je me sens bien rougi maintenant. – David

Questions connexes