Hi,
i've got the classes A and B like that:
public class A
{
public virtual int ID{get;set;}
public B ReferenceToB{get;set;}
}
public class B
{
public virtual int ID{get;set;}
public A ReferenceToA{get;set;}
}
My mappings:
<class table="TABLE_A" name="A">
<id name="ID" column="ID">
<generator class="assigned" />
</id>
<many-to-one name="B" column="B_ID" lazy="no-proxy" />
</class>
<class table="TABLE_B" name="B">
<id name="ID" column="ID">
<generator class="assigned" />
</id>
<many-to-one name="A" column="A_ID" lazy="no-proxy" />
</class>
Now I built the following query:
var query = QueryOver.Of<A>()
.Fetch(a => a.B).Eager;
Now to the problem. When I execute the query in my DataAccess-Layer with
query.GetExecutableQueryOver(session)
the generated SQL says that the reference to B was loaded.
But if I want to access the Property B a
NHibernate.LazyInitializationException will be thrown. I think it has
something to do with my session. At the time I want access the property B
my session is already closed. When I debug the query result and look at the
generated proxy-class I found a non-public field __interceptor which holds
the TargetInstance. In this TargetInstance my eager-Loaded Property B is
set.
Is there a possibility to access the eager loaded references after the
session is closed? I want to do this because I've got a data structure with
several references to different classes. I have to work on this data
structure in different tasks on different ways. Sometimes I do not need
some references as they are not interesting me for the current task. But in
an other task I need these references. Instead of lazy load the references
when I access them I want to load all needed references at one time because
I already know that I will need them for my task. My idea was to enable
lazy-loading by default and fetch all needed references in my query.
Sorry for my bad english but I hope everybody understand my problem and
someone can help? Perhaps I make some general mistakes with using lazy
loading? It's logical that I can not access to lazy loaded properties when
the session is closed but I thought i can "switch off" the lazy loading
with fetching eagerly and then have access to the properties after closing
the session.
Thank u!
--
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/nhusers/-/3n6lueUqq6sJ.
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.