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.