Используя NHibernate.Mapping.Attributes, у меня есть класс сущности с чем-то вроде:
[Class]
public class EntityA
{
...
[Id][Generator(class="guid")]
public Guid Id {...}
[Property]
public string Property1 {...}
...
}
Допустим, я добавлю временную сущность в контекст постоянства с кодом, подобным этому:
...
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
...
Я полагаю, что утверждение будет успешным, но фактический результат неверен. У меня сложилось впечатление, что метод save обновит свойство Id сущности сгенерированным значением. Я проверил это, используя NHibernate 1.2 и 2.0 с похожим результатом.
Так что вопрос:
- Является ли это поведение (не обновление идентификатора сущности) заданным, или у меня неверная компиляция NHibernate на моей машине?