Hibernate version:1.2
Mapping documents:
<?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="false"> <class name="DosRios.Core.PortalManagement.Portal, DosRios.Core" table="Portal"> <id name="Id" type="Guid" unsaved-value="null"> <column name="Id" length="16" sql-type="uniqueidentifier" unique="true" index="PK_Portal"/> <generator class="guid" /> </id> <property name="Name" type="String"> <column name="Name" length="255" sql-type="nvarchar"/> </property> <property name="CultureInfo" type="String"> <column name="CultureInfo" length="50" sql-type="nvarchar"/> </property> <property name="SysCreate" type="DateTime" generated="insert"> <column name="SysCreate" length="8" sql-type="datetime"/> </property> <property name="SysCreateUser" type="Guid"> <column name="SysCreateUser" length="16" sql-type="uniqueidentifier"/> </property> <property name="SysUpdate" type="DateTime"> <column name="SysUpdate" length="8" sql-type="datetime"/> </property> <property name="SysUpdateUser" type="Guid"> <column name="SysUpdateUser" length="16" sql-type="uniqueidentifier"/> </property> <bag name="PortalURLs" inverse="true" lazy="true" cascade="all-delete-orphan"> <key column="PortalId"/> <one-to-many class="DosRios.Core.PortalManagement.URL, DosRios.Core"/> </bag> <bag name="PortalCultures" inverse="true" lazy="true" cascade="all-delete-orphan"> <key column="PortalId" /> <one-to-many class="DosRios.Core.PortalManagement.PortalCulture, DosRios.Core" /> </bag> </class> </hibernate-mapping>
<?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" auto-import="false"> <class name="DosRios.Core.PortalManagement.PortalCulture, DosRios.Core" table="PortalCulture"> <id name="Id" type="Guid" unsaved-value="null"> <column name="Id" length="16" sql-type="uniqueidentifier" unique="true"/> <generator class="guid" /> </id> <property name="Culture" type="String"> <column name="Culture" length="50" sql-type="nvarchar"/> </property> <property name="DisplayName" type="String"> <column name="DisplayName" length="500" sql-type="nvarchar"/> </property> <property name="SysCreate" type="DateTime" generated="insert"> <column name="SysCreate" sql-type="datetime"/> </property> <property name="SysCreateUser" type="String"> <column name="SysCreateUser" length="50" sql-type="nvarchar"/> </property> <property name="SysUpdate" type="DateTime"> <column name="SysUpdate" sql-type="datetime"/> </property> <property name="SysUpdateUser" type="String"> <column name="SysUpdateUser" length="50" sql-type="nvarchar"/> </property>
<many-to-one name="Portal" class="DosRios.Core.PortalManagement.Portal, DosRios.Core"> <column name="PortalId" length="16" sql-type="uniqueidentifier" not-null="true" /> </many-to-one>
</class> </hibernate-mapping>
Code between sessionFactory.openSession() and session.close():
Dim portalService As PortalService(Of Portal) = New PortalService(Of Portal)() Dim urlService As URLService(Of URL) = New URLService(Of URL)() Dim url As URL = urlService.LoadUrl(environment) Dim portal As Portal = url.Portal
Dim portalCultures As IList = portal.PortalCultures Dim i As Int32 = portalCultures.Count
Full stack trace of any exception that occurs:
An exception of type 'NHibernate.LazyInitializationException' occurred in NHibernate.DLL but was not handled in user code
Additional information: Failed to lazily initialize a collection
Name and version of the database you are using:SQL Server 2005
I get the above exception when I attempt to access the portalCultures.Count property. I have used SQL Profiler to check the SQL that is being generated and when I access the PortalCultures colletion off the portal instance, the SQL that is run returns to records. It's as if there is some type of mapping problem between the resultset from the database to the .NET objects. Does anyone have any suggestions? Thanks in advance.
|