The behavior is by design.
It's explained in detail here:
http://ayende.com/Blog/archive/2009/09/03/answer-the-lazy-loaded-inheritance-many-to-one-association-orm.aspx
And here's a possible workaround:
http://sessionfactory.blogspot.com/2010/08/hacking-lazy-loaded-inheritance.html
Diego
On Wed, Nov 24, 2010 at 07:19, Pancake <[email protected]> wrote:
> 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]<nhusers%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/nhusers?hl=en.
>
>
--
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.