Это ответственность персистента, поэтому я позволю ему выяснить это вместо ручной проверки несохраненного значения:
public bool? IsPersisted(object obj, ISession session)
{
var sessionFactoryImpl = (ISessionFactoryImplementor)session.SessionFactory;
var persister = new SessionFactoryHelper(sessionFactoryImpl).RequireClassPersister(obj.GetType().AssemblyQualifiedName);
return !persister.IsTransient(obj, (ISessionImplementor)session);
}
Персистура персистент делает еще несколько вещей чем просто проверка несохраненного значения, например, проверка версии и кэша второго уровня.И кажется, что не всегда возможно определить, является ли он переходным (возвращает bool?
).