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);
}
}
|