J'ai remarqué, en utilisant log4net, que lors de l'appel de ISession.Update, il met à jour tous les objets modifiés.
Par exemple:NHibernate ISession.Update
// Change 2 instances
user1.IsDeleted = true;
user2.UserName = "Xyz";
// Call session.Update to update the 2 users
using (ITransaction transaction = session.BeginTransaction())
{
Session.Update(user1); // This updates both user1 & user2
transaction.Commit();
}
using (ITransaction transaction = session.BeginTransaction())
{
Session.Update(user2); // Now there is no need for this
transaction.Commit();
}
Est-ce le comportement par défaut de NHibernate ou a quelque chose à voir avec mon fichier de mappage? Puis-je faire une mise à jour de NHibernate une par une?
Utilisez-vous plusieurs transactions par session? Et pourquoi obtenez-vous l'utilisateur avant de commencer la transaction? – Paco
Oui plusieurs transactions par session. Je laisse toujours la session ouverte et utilise une nouvelle transaction pour chaque opération. Je reçois l'instance de l'utilisateur en appelant session.Get, passe l'utilisateur à l'interface utilisateur pour apporter des modifications puis le mettre à jour. –
Pourquoi utilisez-vous une transaction distincte pour chaque opération? Cela semble très étrange. – Paco