I also bumped into this problem (non-case-sensitive String.Contains() is a
really common requirement), and still looking for a solution for this..
which apparently still produces the same exception in the recent release of
NH-Linq. Any idea?
Thanks

On Tue, May 5, 2009 at 1:24 PM, Bryan Murphy <bmurphy1...@gmail.com> wrote:

>
> We're using Postgres and NHibernate 1.2, but are planning a migration
> to 2.0.x or 2.1.x soon.  In one of my experiments, I'm trying to get a
> query to use the following index:
>
> CREATE INDEX users__index__username ON users(LOWER(username));
>
> We haven't had any problems using these indexes with HQL, but we're
> experimenting with Linq 2 SQL.  I can't figure out how to get
> NHibernate to call the database LOWER() function when writing a Linq
> query.  Am I missing something?
>
> The query looks like this:
>
> from u in session.Linq<User>()
> where u.EmailAddress.ToLower() == this.EmailAddress.ToLower()
> select u;
>
> And the exception I'm getting (v2.1.0alpha2) is:
>
> Unhandled Exception: System.ArgumentOutOfRangeException: Index was out
> of range. Must be non-negative and less than the size of the
> collection.
> Parameter name: index
>   at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument
> argument, ExceptionResource resource)
>   at System.ThrowHelper.ThrowArgumentOutOfRangeException()
>   at System.SZArrayHelper.get_Item[T](Int32 index)
>   at System.Collections.ObjectModel.ReadOnlyCollection`1.get_Item(Int32
> index)
>   at
> NHibernate.Linq.Visitors.EntityExpressionVisitor.VisitMethodCall(MethodCallExpression
> expr)
>   at NHibernate.Linq.Visitors.ExpressionVisitor.Visit(Expression exp)
>   at NHibernate.Linq.Visitors.NHibernateExpressionVisitor.Visit(Expression
> exp)
>   at NHibernate.Linq.Visitors.EntityExpressionVisitor.FindEntity(Expression
> expr, Boolean findFirst)
>   at NHibernate.Linq.Visitors.EntityExpressionVisitor.RootEntity(Expression
> expr)
>   at
> NHibernate.Linq.Visitors.BinaryCriterionVisitor.VisitMethodCall(MethodCallExpression
> expr)
>   at NHibernate.Linq.Visitors.ExpressionVisitor.Visit(Expression exp)
>   at NHibernate.Linq.Visitors.NHibernateExpressionVisitor.Visit(Expression
> exp)
>   at
> NHibernate.Linq.Visitors.BinaryCriterionVisitor.GetBinaryCriteria(ICriteria
> rootCriteria, ISession session, BinaryExpression expr,
> ComparePropToValue comp
> arePropToValue, ComparePropToProp comparePropToProp,
> CompareValueToCriteria compareValueToCriteria, ComparePropToCriteria
> comparePropToCriteria)
>   at
> NHibernate.Linq.Visitors.WhereArgumentsVisitor.VisitBinaryCriterionExpression(BinaryExpression
> expr)
>   at
> NHibernate.Linq.Visitors.WhereArgumentsVisitor.VisitBinary(BinaryExpression
> expr)
>   at NHibernate.Linq.Visitors.ExpressionVisitor.Visit(Expression exp)
>   at NHibernate.Linq.Visitors.NHibernateExpressionVisitor.Visit(Expression
> exp)
>   at
> NHibernate.Linq.Visitors.ExpressionVisitor.VisitLambda(LambdaExpression
> lambda)
>   at NHibernate.Linq.Visitors.ExpressionVisitor.Visit(Expression exp)
>   at NHibernate.Linq.Visitors.NHibernateExpressionVisitor.Visit(Expression
> exp)
>   at
> NHibernate.Linq.Visitors.WhereArgumentsVisitor.VisitUnary(UnaryExpression
> expr)
>   at NHibernate.Linq.Visitors.ExpressionVisitor.Visit(Expression exp)
>   at NHibernate.Linq.Visitors.NHibernateExpressionVisitor.Visit(Expression
> exp)
>   at NHibernate.Linq.Visitors.WhereArgumentsVisitor.GetCriterion(ICriteria
> rootCriteria, ISession session, Expression expression)
>   at
> NHibernate.Linq.Visitors.RootVisitor.HandleWhereCall(MethodCallExpression
> call)
>   at
> NHibernate.Linq.Visitors.RootVisitor.VisitMethodCall(MethodCallExpression
> expr)
>   at NHibernate.Linq.Visitors.ExpressionVisitor.Visit(Expression exp)
>   at NHibernate.Linq.Visitors.NHibernateExpressionVisitor.Visit(Expression
> exp)
>   at
> NHibernate.Linq.Visitors.NHibernateQueryTranslator.Translate(Expression
> expression, QueryOptions queryOptions)
>   at NHibernate.Linq.NHibernateQueryProvider.Execute(Expression expression)
>   at NHibernate.Linq.Query`1.System.Collections.IEnumerable.GetEnumerator()
>
> Thanks,
> Bryan
>
> >
>

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

Reply via email to