public static bool IsTransient(ISession session, object obj) { ISessionFactoryImplementor sessionFactoryImpl = session.SessionFactory as ISessionFactoryImplementor; // Here `obj` may be an instance of an NHibernate proxy, so we cannot simply use // `obj.GetType().FullName`, we need to get the real underlying type. var persister = new SessionFactoryHelper(sessionFactoryImpl) .RequireClassPersister(NHibernateUtil.GetClass(obj).FullName); bool?yes = persister.IsTransient(obj, (ISessionImplementor)session); return(yes ?? default(bool)); }
public bool?IsPersisted(object obj, ISession session) { try { var sessionFactoryImpl = (ISessionFactoryImplementor)session.SessionFactory; var persister = new SessionFactoryHelper(sessionFactoryImpl).RequireClassPersister(obj.GetType().FullName); return(!persister.IsTransient(obj, (ISessionImplementor)session)); } catch (Exception) { return(null); } }