From: <aye...@us...> - 2010-01-24 22:44:52
|
Revision: 4926 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4926&view=rev Author: ayenderahien Date: 2010-01-24 22:44:45 +0000 (Sun, 24 Jan 2010) Log Message: ----------- modify ghost property functionality to use lazy='no-proxy' Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Cfg/MappingSchema/Hbm.generated.cs trunk/nhibernate/src/NHibernate/Cfg/MappingSchema/HbmManyToOne.cs trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/PropertiesBinder.cs trunk/nhibernate/src/NHibernate/Engine/StatefulPersistenceContext.cs trunk/nhibernate/src/NHibernate/Intercept/AbstractFieldInterceptor.cs trunk/nhibernate/src/NHibernate/nhibernate-mapping.xsd trunk/nhibernate/src/NHibernate.Test/GhostProperty/Mappings.hbm.xml Modified: trunk/nhibernate/src/NHibernate/Cfg/MappingSchema/Hbm.generated.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/MappingSchema/Hbm.generated.cs 2010-01-24 21:46:35 UTC (rev 4925) +++ trunk/nhibernate/src/NHibernate/Cfg/MappingSchema/Hbm.generated.cs 2010-01-24 22:44:45 UTC (rev 4926) @@ -678,14 +678,6 @@ public bool notnullSpecified; /// <remarks/> - [System.Xml.Serialization.XmlAttributeAttribute("force-load-on-property-access")] - public bool forceloadonpropertyaccess; - - /// <remarks/> - [System.Xml.Serialization.XmlAttributeAttribute()] - public bool forceloadonpropertyaccessSpecified; - - /// <remarks/> [System.Xml.Serialization.XmlAttributeAttribute()] [System.ComponentModel.DefaultValueAttribute(false)] public bool unique; Modified: trunk/nhibernate/src/NHibernate/Cfg/MappingSchema/HbmManyToOne.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/MappingSchema/HbmManyToOne.cs 2010-01-24 21:46:35 UTC (rev 4925) +++ trunk/nhibernate/src/NHibernate/Cfg/MappingSchema/HbmManyToOne.cs 2010-01-24 22:44:45 UTC (rev 4926) @@ -28,11 +28,6 @@ get { return optimisticlock; } } - public bool ForceLoadOnPropertyAccess - { - get { return forceloadonpropertyaccess; } - } - #endregion #region Overrides of AbstractDecoratable Modified: trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/PropertiesBinder.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/PropertiesBinder.cs 2010-01-24 21:46:35 UTC (rev 4925) +++ trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/PropertiesBinder.cs 2010-01-24 22:44:45 UTC (rev 4926) @@ -107,7 +107,7 @@ var value = new ManyToOne(table); BindManyToOne(manyToOneMapping, value, propertyName, true); property = CreateProperty(entityPropertyMapping, className, value, inheritedMetas); - property.IsGhostProperty = manyToOneMapping.ForceLoadOnPropertyAccess; + property.IsGhostProperty = manyToOneMapping.Lazy == HbmLaziness.NoProxy; BindManyToOneProperty(manyToOneMapping, property); } else if ((componentMapping = entityPropertyMapping as HbmComponent) != null) Modified: trunk/nhibernate/src/NHibernate/Engine/StatefulPersistenceContext.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Engine/StatefulPersistenceContext.cs 2010-01-24 21:46:35 UTC (rev 4925) +++ trunk/nhibernate/src/NHibernate/Engine/StatefulPersistenceContext.cs 2010-01-24 22:44:45 UTC (rev 4926) @@ -720,6 +720,14 @@ } } + public void ClearProxyFor(IEntityPersister persister, EntityKey key) + { + if (!persister.HasProxy || key == null) + return; + + proxiesByKey.Remove(key); + } + /// <summary> /// Return the existing proxy associated with the given <tt>EntityKey</tt>, or the /// third argument (the entity associated with the key) if no proxy exists. Init Modified: trunk/nhibernate/src/NHibernate/Intercept/AbstractFieldInterceptor.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Intercept/AbstractFieldInterceptor.cs 2010-01-24 21:46:35 UTC (rev 4925) +++ trunk/nhibernate/src/NHibernate/Intercept/AbstractFieldInterceptor.cs 2010-01-24 22:44:45 UTC (rev 4926) @@ -108,9 +108,14 @@ { value.HibernateLazyInitializer.Initialize(); var association = value.HibernateLazyInitializer.GetImplementation(session); - var narrowedProxy = session.PersistenceContext.ProxyFor(association); + //var narrowedProxy = session.PersistenceContext.ProxyFor(association); // we set the narrowed impl here to be able to get it back in the future - value.HibernateLazyInitializer.SetImplementation(narrowedProxy); + value.HibernateLazyInitializer.SetImplementation(association); + var entityPersister = session.GetEntityPersister(value.HibernateLazyInitializer.EntityName, value); + var key = new EntityKey(value.HibernateLazyInitializer.Identifier, + entityPersister, + session.EntityMode); + session.PersistenceContext.RemoveProxy(key); } return value.HibernateLazyInitializer.GetImplementation(session); } Modified: trunk/nhibernate/src/NHibernate/nhibernate-mapping.xsd =================================================================== --- trunk/nhibernate/src/NHibernate/nhibernate-mapping.xsd 2010-01-24 21:46:35 UTC (rev 4925) +++ trunk/nhibernate/src/NHibernate/nhibernate-mapping.xsd 2010-01-24 22:44:45 UTC (rev 4926) @@ -879,8 +879,6 @@ </xs:attribute> <xs:attribute name="unique" default="false" type="xs:boolean"> </xs:attribute> - <xs:attribute name="force-load-on-property-access" default="false" type="xs:boolean"> - </xs:attribute> <xs:attribute name="unique-key" type="xs:string" /> <xs:attribute name="index" type="xs:string" /> <xs:attribute name="cascade" type="xs:string" /> Modified: trunk/nhibernate/src/NHibernate.Test/GhostProperty/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/GhostProperty/Mappings.hbm.xml 2010-01-24 21:46:35 UTC (rev 4925) +++ trunk/nhibernate/src/NHibernate.Test/GhostProperty/Mappings.hbm.xml 2010-01-24 22:44:45 UTC (rev 4926) @@ -7,7 +7,7 @@ <id name="Id"> <generator class="assigned" /> </id> - <many-to-one name="Payment" force-load-on-property-access="true"/> + <many-to-one name="Payment" lazy="no-proxy"/> </class> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |