Je suis assez nouveau à nHibernate, donc ce sera probablement une question assez stupide. Mais de toute façon, enregistrer un objet fonctionne bien, la mise à jour ne fonctionne pas.Mise à jour d'un objet dans nHibernate
C'est ce que je fais:
using (ISession session = _sessionFactory.OpenSession())
{
session.SaveOrUpdate(schemaChange);
schemaChange.ScriptName = "New one";
session.SaveOrUpdate(schemaChange);
}
Le premier saveOrUpdate insère une schemaChange dans la base de données. Le second devrait mettre à jour le même objet, mais nHibernate ne le fait pas.
Dans la sortie I get:
DEBUG - instance persistante de: DotNetMigrations.Core.Domain.SchemaChange
DEBUG - ignorant instance persistante
DEBUG - objet déjà associé à la session: [DotNetMigrations .Core.Domain.SchemaChange # 129]
MISE à JOUR
Eh bien, il était si simple (et question stupide), je l'ai trouvé moi-même:
session.SaveOrUpdate(schemaChange);
schemaChange.ScriptName = "New one";
session.Flush();
Makes sence. nHibernate est vraiment supérieur à n'importe quel outil orm avec lequel j'ai travaillé. Ce que je n'arrive pas à comprendre, c'est pourquoi il existe une méthode SaveOrUpdate ... Si vous mettez à jour, l'objet n'est-il pas automatiquement associé à la session? (parce que vous l'avez sorti de la base de données en premier, sauf si vous l'avez envoyé par exemple à un Flex RIA et il est revenu)
Alors, comment savez-vous si l'objet est déjà associé, soit faire un SaveOrUpdate() ou juste un Flush()?
Vous auriez pu répondre automatiquement à votre question et gagner un badge ici ... ^^ – Romain
Ouais, ça aurait rendu ma vie digne d'être vécue ;-) –