I think the equivalent would be:

User userAlias = null;
session.QueryOver<Network>()
    .JoinAlias(n => n.Users, () => userAlias)
    .Where(u => u.UserId == 42)
    .List();

or you could rewriter the criteria as:

session.CreateCriteria(typeof(Network))
    .CreateCriteria("Users")
        .Add(Expression.Eq("UserId", 42))
        .List<Network>();

which in QueryOver would be:

session.QueryOver<Network>()
    .JoinQueryOver(n => n.Users)
        .Where(u => u.UserId == 42)
        .List();

  From: Mohamed Meligy 
  Sent: Monday, May 03, 2010 10:14 PM
  To: [email protected] 
  Subject: Re: [nhusers] Re: Querying a many-to-many relationship?


  Any idea what the QueryOver equivalent would be?

  --
  Mohamed Meligy
  Senior Developer, Team Lead Backup (.Net Technologies - TDG - Applications)
  Injazat Data Systems
  P.O. Box: 8230 Abu Dhabi, UAE.

  Phone:  +971 2 6992700
  Direct:   +971 2 4045385
  Mobile:  +971 50 2623624, +971 55 2017 621

  E-mail: [email protected]
  Weblog: http://gurustop.net



  On Mon, May 3, 2010 at 4:18 AM, Kevin Pang <[email protected]> wrote:

    Nevermind John, your original answer gave me enough information to get
    the query. Here it is, in case anyone else was curious (or if I made a
    mistake and someone wants to correct it):

    session.CreateCriteria(typeof (Network))
           .CreateAlias("Users", "Users")
           .Add(Expression.Eq("Users.UserId", 42))
           .List<Network>();


    On May 2, 5:11 pm, Kevin Pang <[email protected]> wrote:
    > Here are my Fluent mappings (simplified to only include the necessary
    > pieces):
    >
    >         public class UserMap : ClassMap<User>
    >         {
    >                 public UserMap()
    >                 {
    >                         Table("Users");
    >
    >                         Id(x => x.UserId)
    >                                 .GeneratedBy.Identity();
    >
    >                         HasManyToMany(x => x.Networks)
    >                                 .AsSet()
    >                                 .Access.PascalCaseField(Prefix.Underscore)
    >                                 .Table("UserNetworks")
    >                                 .Inverse()
    >                                 .ParentKeyColumn("UserId")
    >                                 .ChildKeyColumn("NetworkId")
    >                                 .Fetch.Select()
    >                                 .AsSet()
    >                                 .Cascade.SaveUpdate();
    >                 }
    >         }
    >
    >         public class NetworkMap : ClassMap<Network>
    >         {
    >                 public NetworkMap()
    >                 {
    >                         Table("Networks");
    >
    >                         Id(x => x.NetworkId)
    >                                 .GeneratedBy.Identity();
    >
    >                         HasManyToMany(x => x.Users)
    >                                 .Access.PascalCaseField(Prefix.Underscore)
    >                                 .Table("UserNetworks")
    >                                 .ParentKeyColumn("NetworkId")
    >                                 .ChildKeyColumn("UserId")
    >                                 .Fetch.Select()
    >                                 .AsSet()
    >                                 .Cascade.SaveUpdate();
    >                 }
    >         }
    >
    > On May 2, 3:00 pm, John Davidson <[email protected]> wrote:
    >
    >
    >
    >
    >
    > > If you provide your mappings then I can give you a proper example. 
Without
    > > mappings the idea is to create a criteria to return the Networks object 
and
    > > alias the UserNetworksXref and then select where UserNetworksXref.User =
    > > User
    >
    > > John Davidson
    >
    > > On Sun, May 2, 2010 at 4:51 PM, Kevin Pang <[email protected]> wrote:
    > > > I have two tables, Users and Networks, with a many-to-many
    > > > relationship table UserNetworks to indicate which Users are in which
    > > > Networks. I do not have a UserNetwork class to correspond to the
    > > > UserNetworks table.
    >
    > > > How can I construct a query using the Criteria API to retrieve all
    > > > Networks that belong to a User?
    >
    > > > I'm aware that I can simply load up a User first, then traverse over
    > > > its Networks property, but I was wondering how you would do it if you
    > > > wanted to do it via a query instead.
    >
    > > > --
    > > > 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]<nhusers%[email protected] >
    > > > .
    > > > For more options, visit this group at
    > > >http://groups.google.com/group/nhusers?hl=en.
    >
    > > --
    > > 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 
athttp://groups.google.com/group/nhusers?hl=en.
    >
    > --
    > 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 
athttp://groups.google.com/group/nhusers?hl=en.

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





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

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