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