I am having trouble with NHibernate's creation of proxy ("ghost")
objects to support lazy loading of collections.
I have an abstract base class ("Foo") which has several derived
classes ("Bar", "Baz"). Another class maintains a collection of these
objects - it is an IList<Foo>, and it is set to lazy load this
collection. The mapping for this looks like this:
<list name="FooList" lazy="true" cascade="all-delete-orphan"
table="tblFoos">
<key column="ParentID" />
<index column="Position" />
<many-to-many column="FooID" class="Foo" />
</list>
In my UI, I need to downcast the Foo objects to Bar or Baz objects in
order to display them correctly. This is where the problem occurs.
Sometimes the cast succeeds, and other times the cast fails because NH
has created a proxy Foo object.
I looked through the NH debug logs and found some clues. What appears
to be happening is that some of my objects are in the session cache
fully-hydrated (as Bar or Baz objects), while others are Foo proxies.
(The fully-hydrated objects are the result of prior operations in the
session.) When I iterate over my FooList, if the the object in the
session cache happens to be a proxy, I get an exception when I
downcast it.
I guess what I'm looking for is a way to tell NH to ignore proxy Foo
objects in the session cache if a subsequent access would otherwise
return fully-hydrated Bar or Baz objects (if they weren't in the
cache.)
Any advice on how to handle this would be appreciated.
Thanks,
P
--
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.