"Constant cannot be sequences" exception
Posted: Mon 21 Sep 2009 23:34
I have a query which fails for a reason I don't understand. I can make it work with a tiny change, but that change should be no business of the LINQ query and is at odds with my application's structure.
The query breaks when one of the tables is referenced from a variable instead of referenced directly from the datacontext, but it shouldn't matter because as this example demonstrates in both cases it's the exact same object:
This means that this query can't be written without direct access to the data context, which is a problem since my application is tiered and the code that executes this query doesn't have access to the datacontext, just the relevant table objects.
(The query above is similar to a portion in my much larger query, I whittled the problem down to this repeatable example.)
Here's the stack trace:
Unhandled Exception: System.NotSupportedException: Constant cannot be sequences.
at Devart.Data.Linq.Provider.Query.bk.a(SqlNode A_0)
at Devart.Data.Linq.Provider.Query.bk.a(Expression A_0, LambdaExpression A_1)
at Devart.Data.Linq.Provider.Query.bk.b(MethodCallExpression A_0)
at Devart.Data.Linq.Provider.Query.bk.j(Expression A_0)
at Devart.Data.Linq.Provider.Query.bk.a(Expression A_0, LambdaExpression A_1, Boolean A_2)
at Devart.Data.Linq.Provider.Query.bk.b(MethodCallExpression A_0)
at Devart.Data.Linq.Provider.Query.bk.j(Expression A_0)
at Devart.Data.Linq.Provider.Query.bk.d(Expression A_0)
at Devart.Data.Linq.Provider.Query.bk.a(UnaryExpression A_0)
at Devart.Data.Linq.Provider.Query.bk.j(Expression A_0)
at Devart.Data.Linq.Provider.Query.bk.d(Expression A_0)
at Devart.Data.Linq.Provider.Query.bk.a(Expression A_0, LambdaExpression A_1)
at Devart.Data.Linq.Provider.Query.bk.b(MethodCallExpression A_0)
at Devart.Data.Linq.Provider.Query.bk.j(Expression A_0)
at Devart.Data.Linq.Provider.Query.bk.a(Expression A_0, LambdaExpression A_1, SqlNodeType A_2, Type A_3)
at Devart.Data.Linq.Provider.Query.bk.b(MethodCallExpression A_0)
at Devart.Data.Linq.Provider.Query.bk.j(Expression A_0)
at Devart.Data.Linq.Provider.Query.bk.i(Expression A_0)
at Devart.Data.Linq.Provider.DataProvider.a(Expression A_0)
at Devart.Data.Linq.Provider.DataProvider.h(Expression A_0)
at Devart.Data.Linq.DataQuery`1.System.Linq.IQueryProvider.Execute[S](Expression expression)
at System.Linq.Queryable.Count[TSource](IQueryable`1 source)
I'm using version 1.0.20.0 of Devart.Data.Linq and querying an Oracle database.
Thank you.
The query breaks when one of the tables is referenced from a variable instead of referenced directly from the datacontext, but it shouldn't matter because as this example demonstrates in both cases it's the exact same object:
Code: Select all
' this query will work
Dim results = From p In dc.Payments _
Where Not (From t In dc.OnlineTransactions Where t.TxRefNum = p.TxRefNum).Any()
Console.WriteLine("result count: " & results.Count())
' this query will throw:
' "System.NotSupportedException: Constant cannot be sequences."
Dim allTransactions = dc.OnlineTransactions
Dim results2 = From p In dc.Payments _
Where Not (From t In allTransactions Where t.TxRefNum = p.TxRefNum).Any()
Console.WriteLine("result count: " & results2.Count())
(The query above is similar to a portion in my much larger query, I whittled the problem down to this repeatable example.)
Here's the stack trace:
Unhandled Exception: System.NotSupportedException: Constant cannot be sequences.
at Devart.Data.Linq.Provider.Query.bk.a(SqlNode A_0)
at Devart.Data.Linq.Provider.Query.bk.a(Expression A_0, LambdaExpression A_1)
at Devart.Data.Linq.Provider.Query.bk.b(MethodCallExpression A_0)
at Devart.Data.Linq.Provider.Query.bk.j(Expression A_0)
at Devart.Data.Linq.Provider.Query.bk.a(Expression A_0, LambdaExpression A_1, Boolean A_2)
at Devart.Data.Linq.Provider.Query.bk.b(MethodCallExpression A_0)
at Devart.Data.Linq.Provider.Query.bk.j(Expression A_0)
at Devart.Data.Linq.Provider.Query.bk.d(Expression A_0)
at Devart.Data.Linq.Provider.Query.bk.a(UnaryExpression A_0)
at Devart.Data.Linq.Provider.Query.bk.j(Expression A_0)
at Devart.Data.Linq.Provider.Query.bk.d(Expression A_0)
at Devart.Data.Linq.Provider.Query.bk.a(Expression A_0, LambdaExpression A_1)
at Devart.Data.Linq.Provider.Query.bk.b(MethodCallExpression A_0)
at Devart.Data.Linq.Provider.Query.bk.j(Expression A_0)
at Devart.Data.Linq.Provider.Query.bk.a(Expression A_0, LambdaExpression A_1, SqlNodeType A_2, Type A_3)
at Devart.Data.Linq.Provider.Query.bk.b(MethodCallExpression A_0)
at Devart.Data.Linq.Provider.Query.bk.j(Expression A_0)
at Devart.Data.Linq.Provider.Query.bk.i(Expression A_0)
at Devart.Data.Linq.Provider.DataProvider.a(Expression A_0)
at Devart.Data.Linq.Provider.DataProvider.h(Expression A_0)
at Devart.Data.Linq.DataQuery`1.System.Linq.IQueryProvider.Execute[S](Expression expression)
at System.Linq.Queryable.Count[TSource](IQueryable`1 source)
I'm using version 1.0.20.0 of Devart.Data.Linq and querying an Oracle database.
Thank you.