The subject is confusing, i couldnt figure out a way to ask it in
clear english. I do have a sample code which will clear it up.

Imagine having three entities:
Category
Contract
Unit

Contract and Category have a many to many relationship.
Contract also has one-to-one with Unit.

My interest is to get all categories that specific unit contracts
have. A Criteria could be described as next:

var query = _nHibernateSession.CreateCriteria<Category>("cat")
.CreateAlias("cat.Contracts", "contract")
.Add(Expression.Eq("contract.Unit.Id", unitId));

or with lambda extensions:

Category categoryAlias = null;
Contract contractAlias = null;

var query = _nHibernateSession.CreateCriteria(typeof (Category), () =>
categoryAlias)
                .CreateAlias(() => categoryAlias.Contracts, () => contractAlias)
                .Add(() => contractAlias.Unit.Id == unitId);

This however seems to have a sideeffect of loading in all the
referencing Contracts as well. I only want the categories loaded in.
Contract is a very complex entity and is completely unnessecary in the
current context.

Can this be done with Criteria API?
I tried to SetFetchMode  to Lazy for category.Contracts but that had
no effect. The SQL query generated selects contracts with each
category.

This is however the only way i could query for categories with the
condition needed. Am i missing something?
I prefer a no magic string solution and thats also why i have two
different query representations that are working. I must admit that
the non lambda is more readable. I wish Nhib to Linq could do this in
2.1.2.

-- 
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