Je rencontre des problèmes lors de l'enregistrement d'une entité dans une base de données SQL Server 2005. J'utilise NHibernate 2.0.0.3002 pour ma couche de persistance. Le mappage est typique, avec un ID entier, comme suitNHibernate "identificateur nul" exception après l'insertion d'une entité
<id name="Id" unsaved-value="0">
<column name="Id"/>
<generator class="identity" />
</id>
J'ai omis le reste pour la brièveté. L'application utilise une classe référentiel avec une méthode de sauvegarde générique comme suit
public void Save(T toSave)
{
Save(new T[] { toSave });
}
public void Save(IEnumerable<T> toSave)
{
using (ISession session = SessionFactory.OpenSession())
{
foreach (T item in toSave)
{
session.SaveOrUpdate(item);
}
session.Flush();
}
}
Lorsque vous appelez saveOrUpdate sur la session, une exception est levée avec un message de « identificateur null ». Quand je vérifie la base de données, la ligne a été insérée avec toutes les valeurs correctes, donc je pense que le problème est quand NHibernate essaie de définir la propriété Id de l'entité avec la valeur retournée par @@ IDENTITY. Je peux voir à travers SQL Profiler que @@ IDENTITY est appelé, donc je ne comprends pas pourquoi l'exception est levée.
Est-ce que quelqu'un d'autre a eu ce problème?
Pouvez-vous afficher le code qui effectue la sauvegarde/mise à jour et lorsque vous essayez d'utiliser cet ID? –
J'ai ajouté le code comme demandé. – gilles27
Quelle version de NHibernate utilisez-vous btw? –