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 <[email protected]
> 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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/fluent-nhibernate?hl=en
-~----------~----~----~----~------~----~------~--~---