From: Michael D. <mik...@us...> - 2004-09-20 02:27:11
|
Update of /cvsroot/nhibernate/nhibernate/src/NHibernate/Type In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5002/NHibernate/Type Modified Files: EntityType.cs Log Message: Fixed problem with EntityType and putting object into cache. Index: EntityType.cs =================================================================== RCS file: /cvsroot/nhibernate/nhibernate/src/NHibernate/Type/EntityType.cs,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** EntityType.cs 7 Mar 2003 19:26:47 -0000 1.4 --- EntityType.cs 20 Sep 2004 02:27:01 -0000 1.5 *************** *** 68,85 **** public abstract bool IsOneToOne { get; } ! public override object Disassemble(object value, ISessionImplementor session) { ! if (value==null) { return null; } ! else { object id = session.GetIdentifier(value); ! if (id==null) throw new AssertionFailure("cannot cache a reference to an object with a null id"); ! return id; } } ! public override object Assemble(object oid, ISessionImplementor session, object owner) { ! return ResolveIdentifier(oid, session, owner); } --- 68,98 ---- public abstract bool IsOneToOne { get; } ! public override object Disassemble(object value, ISessionImplementor session) ! { ! if (value==null) ! { return null; } ! else ! { object id = session.GetIdentifier(value); ! if (id==null) ! { throw new AssertionFailure("cannot cache a reference to an object with a null id"); ! } ! return GetIdentifierType( session ).Disassemble( id, session ); } } ! protected IType GetIdentifierType(ISessionImplementor session) ! { ! return session.Factory.GetIdentifierType( persistentClass ); ! } ! ! public override object Assemble(object oid, ISessionImplementor session, object owner) ! { ! object assembledId = GetIdentifierType( session ).Assemble( oid, session, owner ); ! ! return ResolveIdentifier( assembledId, session, owner ); } *************** *** 98,107 **** public override abstract object Hydrate(IDataReader rs, string[] names, ISessionImplementor session, object owner); ! public override bool IsDirty(object old, object current, ISessionImplementor session) { if ( Equals(old, current) ) return false; object oldid = GetIdentifier(old, session); object newid = GetIdentifier(current, session); ! return !session.Factory.GetIdentifierType(persistentClass).Equals(oldid, newid); } } --- 111,121 ---- public override abstract object Hydrate(IDataReader rs, string[] names, ISessionImplementor session, object owner); ! public override bool IsDirty(object old, object current, ISessionImplementor session) ! { if ( Equals(old, current) ) return false; object oldid = GetIdentifier(old, session); object newid = GetIdentifier(current, session); ! return !GetIdentifierType(session).Equals(oldid, newid); } } |