NHibernate.LazyInitializationException
Nous avons eu ce problème de pop up de façon sporadique, mais maintenant je peux le reproduire à chaque fois. Je suis en incrémentant un compteur de vue sur mon custom construit des forums, ce qui provoque une erreur:
NHibernate.LazyInitializationException: échec paresseusement initialiser une collection, pas de session ou la session a été fermée
Cette erreur se produit sur une autre collection à l'objet. Si j'ajoute:
.Pas.LazyLoad()
À mon Couramment la cartographie, l'erreur déplace autour de mon projet. J'ai gardé la désactivation de chargement différé sur les objets intil il va à un endroit où il n'y a pas de chargement paresseux, et puis il l'a jeté cette erreur:
NHibernate.LazyInitializationException: impossible d'initialiser le proxy - pas de Session.
Puis j'ai pris le nots sur mon chargement paresseux et maintenant je suis de retour à la case départ. Il ne des erreurs lorsque j'incrémenter ce compteur de vue. Voici un extrait de ma classe de base enregistrer le code:
using (ISession session = GetSession())
using (ITransaction tx = session.BeginTransaction())
{
session.SaveOrUpdate(entity);
tx.Commit();
}
En regardant autour, j'ai lu dans un autre post que les transactions peuvent causer un problème, mais que c'était à cause de l'endroit où ils étaient placés. Ce code est étendu à des catégories distinctes de mon domaine d'objets (classes de dépôt). Voici le post:
hibernate: LazyInitializationException: impossible d'initialiser le proxy
Je ne crois pas que c'est mon problème ici. Voici mon couramment cartographie pour la première collection, qui est de lancer l'erreur. Il y a plusieurs autres collections similaires.
HasManyToMany(x => x.Votes)
.WithTableName("PostVotes")
.WithParentKeyColumn("PostId")
.WithChildKeyColumn("VoteId");
OriginalL'auteur Josh | 2009-07-14
Vous devez vous connecter pour publier un commentaire.
Un peu plus loin la recherche sur cette question, comme elle l'a reproduit lui-même, c'est que dans un seul appel vers le serveur, si vous enregistrer et obtenir, vous devez rincer la session. Je fais de mon rincer après le sauver et qui semble avoir corrigé le problème.
OriginalL'auteur Josh
Vérifier qu'il n'y a pas d'autres objets chargés au cours de la session. J'ai eu une situation similaire se produire dans lequel je m'appelle Enregistrer sur un objet qui n'a pas du tout de Chargement Paresseux et il m'a envoyé pour une boucle. Pourquoi j'ai cette erreur sur un objet qui n'est pas le chargement paresseux?
Dans ma situation, j'ai été chargement de plusieurs autres objets dans la page et ces objets n'étaient pas correctement mappées. Quand j'ai appelé Enregistrer NHibernate voudrais essayer de synchroniser à la session et à jeter l'erreur.
Essayez de supprimer tous les autres NHibernate, laissant juste ce compteur de mise à jour. Si l'erreur ne se produit pas seulement avec le compteur ajouter lentement de retour à vous, les autres appels jusqu'à ce que l'erreur revient. Ensuite, vous pouvez commencer à se pencher sur le vrai coupable.
OriginalL'auteur Andrew Hanson