|
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.
|