Doing LINQ over a Lazy-Loaded collection would be a great first step.
I would also like to see solutions that don't depend on LINQ however,
as my classes generally do not expose properties, instead fields
are mapped.

Ideally I would like to map collections to a custom interface that
also
implements ICollection. This more specific interface would have named
methods which could return a subset of the collection based on
parameters. The methods are then perhaps either mapped to a database
query, or mapped to a method which can execute a database query via
ICriteria, LINQ, or whatever you like.


On Jan 24, 11:29 pm, birchoff <[email protected]> wrote:
> I believe the only way to do this would be to use QueryOver/Criteria/
> HQL to do a query which eager loads the lazy loaded collection with a
> left outer join. You would then apply a where clause to the alias.
> Which would allow you to filter which items in the collection are
> actually loaded.
>
> Aside from CreateFilter the only other way I have found for doing this
> is by using ISession.Filter which allows you to pass the proxy for the
> lazy-loaded collection and a HQL query (IIRC) as a parameter and
> receive as a result the filtered collection. Of course now you either
> need to move the logic that operates on the filtered collection
> outside of the class that owns the lazy-loaded collection or take a
> dependency on NH's Session in your class, which is not what you
> wanted.
>
> What would be nice is if the Lazy Loaded collection proxy could
> process a LINQ query. It seems this type of behavior would be perfect
> for the semantics of "lazy=extra". Hopefully something like this will
> be added otherwise the pre-fetching method is the cleanest mechanism I
> have found so far.
>
> On Jan 24, 7:44 pm, Joseph Daigle <[email protected]> wrote:
>
>
>
>
>
>
>
> > I have a lazy-loaded collection that I would like to filter at
> > runtime. For instance I may want to filter the collection so that I
> > SELECT only a subset of the related entities.
>
> > I understand how to use ISession.CreateFilter(), but I would like to
> > do this type of filtering from within the class which contains the
> > collection. I definitely do not want my class having a reference to
> > ISession as this significantly reduces the testability of my domain
> > model.
>
> > Are there any other alternatives or approaches for executing this kind
> > of query, while still maintaining a reasonable level of encapsulation
> > and high testability?
>
> > Thank you,
>
> > --
> > Joseph Daigle

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