J'ai un problème avec NHibernate. Le message d'erreur est:Nhibernate: proxy non initialisé passé pour enregistrer
proxy pour sauver Uninitialized passé
[PersistentObjectException: proxy non initialisée passé pour sauver(). Objet: ...... Domain.Model ......] NHibernate.Event.Default.DefaultSaveEventListener.ReassociateIfUninitializedProxy (Object obj source ISessionImplementor) +104 NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.OnSaveOrUpdate (SaveOrUpdateEvent événement ) +90
NHibernate.Impl.SessionImpl.FireSaveOrUpdate (SaveOrUpdateEvent événement ) +156
NHibernate.Impl.SessionImpl.SaveOrUpdate (Object obj) +152
Alors ce que je fais est , J'ai une racine agrégée d au sein de cette collection d'objets. Lors de l'enregistrement des modifications, j'appelle save sur la racine agrégée uniquement. La classe enfant n'a pas de référence à la racine aggreate.
<bag name="Children" cascade="all-delete-orphan" where="IsDeleted = 0" lazy="true">
<key column="abcId"/>
<one-to-many class="abc"/>
</bag>
Maintenant, l'erreur apparaît quand je collectionne des enfants à être sauvés de l'interface utilisateur comme:
root = repository.GetRootById(id)
// collect children from data list
abc = repository.GetAbcById(abcId)
abc.Name = textName.Text;
...
// no root.Children.Add(abc) is performed here, since abc already is a child of root
repository.Save(root);
...
Exception occurs
Maintenant, si j'accéder à root.Children avant d'enregistrer, cela fonctionne.
Quelqu'un?