Hi,

Does anybody know is it possible to eagerly load polymorphic
association using Linq and NH.

For example: Company is base class, Department is inherited from
Company, and Company has association Employees to the User (one-to-
many) and also association to the Country (many-to-one).
Here is mapping part related to inherited class (without User and
Country classes):

        <class name="Company" discriminator-value="Company">
                <id name="Id" type="int" unsaved-value="0"
access="nosetter.camelcase-underscore">
                        <generator class="native"></generator>
                </id>
                <discriminator column="OrganizationUnit" type="string" 
length="10"
not-null="true"/>
                <property name="Name" type="string" length="50" 
not-null="true"/>
                <many-to-one name="Country" class="Country" column="CountryId" 
not-
null ="false" foreign-key="FK_Company_CountryId"
access="field.camelcase-underscore" />
                <set name="Departments" inverse="true" lazy="true"
access="field.camelcase-underscore">
                        <key column="DepartmentParentId" not-null="false" 
foreign-
key="FK_Department_DepartmentParentId"></key>
                        <one-to-many class="Department"></one-to-many>
                </set>
                <set name="Employees" inverse="true" lazy="true"
access="field.camelcase-underscore">
                        <key column="CompanyId" not-null="false" foreign-
key="FK_User_CompanyId"></key>
                        <one-to-many class="User"></one-to-many>
                </set>
                <subclass name="Department" extends="Company" discriminator-
value="Department">
                        <many-to-one name="DepartmentParent" class="Company"
column="DepartmentParentId" not-null ="false" foreign-
key="FK_Department_DepartmentParentId" access="field.camelcase-
underscore" />
                </subclass>
        </class>

I do not have problem to eagerly load any of the association on the
Company:
Session.Query<Company>().Where(c => c.Name == "Main Company").Fetch(c
=> c.Country).Single();
Session.Query<Company>().Where(c => c.Name == "Main
Company").FetchMany(c => c.Employees).Single();

Also, I could eagerly load not polymorphic association on the
department:
Session.Query<Department>().Where(d => d.Name == "Department
1").Fetch(d => d.DepartmentParent).Single();

But I get NullReferenceException when I try to eagerly load any of the
polymorphic association (from the Department):
Assert.Throws<NullReferenceException>(() =>
Session.Query<Department>().Where(d => d.Name == "Department
1").Fetch(d => d.Country).Single());
Assert.Throws<NullReferenceException>(() =>
Session.Query<Department>().Where(d => d.Name == "Department
1").FetchMany(d => d.Employees).Single());

Am I doing something wrong or this is not supported yet?
Any help is appreciated!
Voislav

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to