Any ideas or hints on this issue would be great,

Thanks

On Saturday, January 5, 2013 9:08:17 PM UTC+2, Andrewz wrote:
>
> I created a web app in Visual Studio 2010, added NHibernate and 
> FluentNHibernate by NuGet.
> My intention is to test how oData works with latest NHibernate and SQL 
> Server 2008 R2
> It's a simple app with one table, User.
> I added like 5,000 users in the User table to have data to query.
>
> *I am doing the following queries which worked OK:*
> http://localhost:4380/UserService.svc/Users()?$top=10&$inlinecount=allpages
>
> http://localhost:4380/UserService.svc/Users()?$filter=FirstName%20eq%20'Andrew0'&$top=10&$inlinecount=allpages
>
> *My question is why the following query fails:*
> http://localhost:4380/UserService.svc/Users()?$filter=substringof('Andrew
> ',tolower(FirstName))&$orderby=LastName&$top=10&$inlinecount=allpages
>
> *The exception is the following(see below the stack trace):*
> Unable to cast object of type 'NHibernate.Hql.Ast.HqlCast' to type 
> 'NHibernate.Hql.Ast.HqlBooleanExpression'.
>
> *Here are my classes:*
>
> [DataServiceKey("Id")]
> [DataServiceEntity]
> public class User
> {
>         public virtual int Id { get; protected set; }
>         public virtual string FirstName { get; set; }
>         public virtual string LastName { get; set; }
> }
>
>     public class UserMapping : ClassMap<User>
>     {
>         public UserMapping()
>         {
>             Id(user => user.Id).GeneratedBy.Identity();
>             Map(user => user.FirstName).Not.Nullable().Length(50);
>             Map(user => user.LastName).Not.Nullable().Length(50);
>         }
>   }
>
>  public class UserDataContext
>     {
>         public ISession Session { set; get; }
>
>         public IQueryable<User> Users 
>         {
>             get
>             {
>                 return this.Session.Query<User>();
>             }
>         }
>     }
>
>  [ServiceBehavior(IncludeExceptionDetailInFaults = true)]
>     public class UserService : DataService<UserDataContext>, IDisposable
>     {
>         ISession session;
>
>         public static void InitializeService(DataServiceConfiguration 
> config)
>         {
>             config.SetEntitySetAccessRule("*", EntitySetRights.All);
>             config.DataServiceBehavior.MaxProtocolVersion = 
> DataServiceProtocolVersion.V2;
>             config.UseVerboseErrors = true;
>         }
>
>         protected override UserDataContext CreateDataSource()
>         {
>             var sessionFactory = new HibernateSessionFactory();
>             this.session = sessionFactory.OpenSession();
>             return new UserDataContext()
>             {
>                 Session = this.session
>             };
>         }
>
>         public void Dispose()
>         {
>             this.session.Dispose();
>             this.session = null;
>         }
>     }
>
>
> *Here is the web response I see in Fiddler:*
>
> <?xml version="1.0" encoding="utf-8" standalone="yes"?>
> <error xmlns="
> http://schemas.microsoft.com/ado/2007/08/dataservices/metadata";>
>   <code></code>
>   <message xml:lang="en-US">An error occurred while processing this 
> request.</message>
>   <innererror>
>     <message>Exception has been thrown by the target of an 
> invocation.</message>
>     <type>System.Reflection.TargetInvocationException</type>
>     <stacktrace>   at 
> System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, 
> Object target, Object[] arguments, SignatureStruct&amp; sig, 
> MethodAttributes methodAttributes, RuntimeType typeOwner)&#xD;
>    at System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo 
> method, Object target, Object[] arguments, Signature sig, MethodAttributes 
> methodAttributes, RuntimeType typeOwner)&#xD;
>    at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags 
> invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, 
> Boolean skipVisibilityChecks)&#xD;
>    at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags 
> invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)&#xD;
>    at System.Reflection.MethodBase.Invoke(Object obj, Object[] 
> parameters)&#xD;
>    at System.Data.Services.RequestQueryProcessor.ProcessCount()&#xD;
>    at System.Data.Services.RequestQueryProcessor.ProcessQuery()&#xD;
>    at System.Data.Services.RequestQueryProcessor.ProcessQuery(IDataService 
> service, RequestDescription description)&#xD;
>    at System.Data.Services.RequestUriProcessor.ProcessRequestUri(Uri 
> absoluteRequestUri, IDataService service)&#xD;
>    at System.Data.Services.DataService`1.ProcessIncomingRequestUri()&#xD;
>    at System.Data.Services.DataService`1.HandleRequest()</stacktrace>
>     <internalexception>
>       <message>*Unable to cast object of type 
> 'NHibernate.Hql.Ast.HqlCast' to type 
> 'NHibernate.Hql.Ast.HqlBooleanExpression'.</message>*
> *      <type>System.InvalidCastException*</type>
>       <stacktrace>   at 
> NHibernate.Hql.Ast.HqlTreeNodeExtensions.AsBooleanExpression(HqlTreeNode 
> node)&#xD;
>    at 
> NHibernate.Linq.Visitors.QueryModelVisitor.VisitWhereClause(WhereClause 
> whereClause, QueryModel queryModel, Int32 index)&#xD;
>    at Remotion.Linq.Clauses.WhereClause.Accept(IQueryModelVisitor visitor, 
> QueryModel queryModel, Int32 index)&#xD;
>    at 
> Remotion.Linq.QueryModelVisitorBase.VisitBodyClauses(ObservableCollection`1 
> bodyClauses, QueryModel queryModel)&#xD;
>    at Remotion.Linq.QueryModelVisitorBase.VisitQueryModel(QueryModel 
> queryModel)&#xD;
>    at 
> NHibernate.Linq.Visitors.QueryModelVisitor.GenerateHqlQuery(QueryModel 
> queryModel, VisitorParameters parameters, Boolean root)&#xD;
>    at 
> NHibernate.Linq.NhLinqExpression.Translate(ISessionFactoryImplementor 
> sessionFactory)&#xD;
>    at 
> NHibernate.Hql.Ast.ANTLR.ASTQueryTranslatorFactory.CreateQueryTranslators(String
>  
> queryIdentifier, IQueryExpression queryExpression, String collectionRole, 
> Boolean shallow, IDictionary`2 filters, ISessionFactoryImplementor 
> factory)&#xD;
>    at 
> NHibernate.Engine.Query.QueryPlanCache.GetHQLQueryPlan(IQueryExpression 
> queryExpression, Boolean shallow, IDictionary`2 enabledFilters)&#xD;
>    at NHibernate.Impl.AbstractSessionImpl.GetHQLQueryPlan(IQueryExpression 
> queryExpression, Boolean shallow)&#xD;
>    at NHibernate.Impl.AbstractSessionImpl.CreateQuery(IQueryExpression 
> queryExpression)&#xD;
>    at NHibernate.Linq.DefaultQueryProvider.PrepareQuery(Expression 
> expression, IQuery&amp; query, NhLinqExpression&amp; nhQuery)&#xD;
>    at NHibernate.Linq.DefaultQueryProvider.Execute(Expression 
> expression)&#xD;
>    at NHibernate.Linq.DefaultQueryProvider.Execute[TResult](Expression 
> expression)&#xD;
>    at System.Linq.Queryable.LongCount[TSource](IQueryable`1 source)&#xD;
>    at 
> System.Data.Services.RequestQueryProcessor.CountQueryResult[TElement](IQueryable`1
>  
> query)</stacktrace>
>     </internalexception>
>   </innererror>
> </error>
>

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/nhusers/-/_B79zDbcu1MJ.
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