Utilisation NHibernate.Mapping.Attributes, j'ai une classe d'entité avec quelque chose comme:Est-il vrai que NHibernate ISession.save (newTransientEntity) ne retournera que l'ID généré, mais ne mettra PAS à jour la propriété Id de l'entité?
[Class]
public class EntityA
{
...
[Id][Generator(class="guid")]
public Guid Id {...}
[Property]
public string Property1 {...}
...
}
Disons que si j'ajoute une entité transitoire au contexte de persistance avec le code comme ceci:
...
Guid id;
using(ISession s = sessionFactory.OpenSession())
using(ITransaction t = s.BeginTransaction())
{
EntityA entity = new EntityA();
entity.Property1 = "Some Value";
id = (Guid) s.Save(entity);
t.Commit();
Assert.IsTrue(s.Contains(entity)); // <-- result: true
}
Assert.AreEquals(id, entity.Id); // <-- Result: false, Expexted: true
...
I supposons que l'affirmation sera réussie, mais le résultat réel est faux. J'ai l'impression que la méthode save mettra à jour la propriété Id de l'entité avec la valeur générée. J'ai testé cela en utilisant à la fois NHibernate 1.2 et 2.0 avec des résultats similaires.
La question est donc:
- Est-ce comportement (pas de mise à jour Id de l'entité) par la conception, ou j'ai mal compilation de NHibernate dans ma machine?
Merci, ça marche! Je comptais trop sur le sérialiseur pour en déduire le nom de l'ID en fonction de la propriété à laquelle IdAttribute est appliqué. Merci encore. – Nordin