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.