Your question's more of an NHibernate specific question, so you may have
accidentally posted to the fluent group instead. ;) In any event, I'll try
and help however I can here.
First off, what do you mean in terms of an opposite scenario? The
description you've given changes the objects and players a little bit. Your
first example is finding a class, by property, which matches any of the
values you have in a collection. Your second example, I'm assuming, is
finding on a class that has a collection, which one of the collections
values is equal to <SomeValue>.

If that's correct, then it depends on what your collection is of. If it's of
primitive values, then it should be relatively simple. You should be able to
do something like:

var myInstance = (MyClass)session.CreateCriteria(typeof(MyClass))
                                          .Add(Restrictions.In("SomeList",
SomeValue))
                                          .UniqueResult();

If it's a collection of entity classes that you have mapped, you'd want to
do something as is pointed out in chapter 12.4 in the NHibernate Reference
documents:

 var myInstance = (MyClass)session.CreateCriteria(typeof(MyClass))
                                          .CreateCriteria("SomeList")

 .Add(Restrictions.Eq("PropertyName", SomeValue))
                                          .UniqueResult();

What happens here is that the second CreateCriteria call creates a separate
criteria, that's now operating on the referenced collection. Now, any added
restrictions will be like sub-queries on that collection's entity class.

Hope that helps!

On Mon, Apr 27, 2009 at 1:06 PM, Francisco Silva <francisco.sam...@gmail.com
> wrote:

>
> So if I had a ListOfSomething and I want an instance of MyClass whose
> SomeProperty value is contained in the ListOfSomething, I would use
>
> var myInstance = (MyClass)session.CreateCriteria(typeof(MyClass))
>                                           .Add(Restrictions.In
> ("SomeProperty", ListOfSomething))
>                                           .UniqueResult();
>
> Now what if I'm in the opposite scenario?
> I mean, I have SomeValue and I want an instance of MyClass whose
> SomeList values contain SomeValue.
> I would hope that there was something like
>
> var myInstance = (MyClass)session.CreateCriteria(typeof(MyClass))
>                                           .Add(Restrictions.In
> (SomeValue, "SomeList"))
>                                           .UniqueResult();
>
> But there isn't. What other options do I have?
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Fluent NHibernate" group.
To post to this group, send email to fluent-nhibernate@googlegroups.com
To unsubscribe from this group, send email to 
fluent-nhibernate+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/fluent-nhibernate?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to