Linq to NHibernate wrapper issue using where statement

Posted by Jacob on Stack Overflow See other posts from Stack Overflow or by Jacob
Published on 2010-04-12T11:58:47Z Indexed on 2010/04/12 12:03 UTC
Read the original article Hit count: 475

I'am using wrapper to get some data from table users

IQueryable<StarGuestWrapper> WhereQuery =    
session.Linq<User>().Where(u => u.HomeClub.Id == clubId && u.IsActive).Select(
                    u =>
                    new StarGuestWrapper()
                        {
                            FullName = u.Name + " " + u.LastName,
                            LoginTime = DateTime.Now,
                            MonthsAsMember = 2,
                            StarRating = 1, 
                            UserPicture = u.Photo.PhotoData, 
                            InstructorFullName = "Someone Xyz",
                            TalkInteractionDuringSession = true,
                            GoalInteractionDuringSession = false
                        });

I use this without a problem as a IQueryable so I can do useful things before actually running the query. Like :

WhereQuery.Skip(startRowIndex).Take(maximumRows).ToList();

and so on.

The problem occurs using 'where' statement on query. For example:

WhereQuery.Where(s => s.StarRating == 1)

will throw an exception in runtime that 'StarRating' doesn't exist in User table - of course it doesn't it's a wrappers property. I will work if I materialize query by

WhereQuery.AsEnumerable().Where(s => s.StarRating == 1)

but then it loses all the sens of using IQueryable and I don't want to do this.

What is strange and interesting that not all properties from wrapper throw error, all the bool values can be used in where statement. Example :

WhereQuery.Where(s => s.TalkInteractionDuringSession)

It works in EntityFramework , why do I get this error in NHibernate and how to get it working the way I want it to ?

© Stack Overflow or respective owner

Related posts about nhibernate

Related posts about c#