Entities:


[Serializable] [HierarchyRoot] public class TestMain : Entity { public TestMain( Session session ) : base( session ) { }

[Field, Key] public int Id { get; private set; }

[Field] public int Val { get; set; }

[Field] public EntitySet<testsuba> TestSubAs { get; private set; }

[Field] public EntitySet<testsubb> TestSubBs { get; private set; } }

[Serializable] [HierarchyRoot] public class TestSubA : Entity { public TestSubA( Session session ) : base( session ) { }

[Field, Key] public int Id { get; private set; }

[Field] public int Val { get; set; } }

[Serializable] [HierarchyRoot] public class TestSubB : Entity { public TestSubB( Session session ) : base( session ) { }

[Field, Key] public int Id { get; private set; }

[Field] public int Val { get; set; } }

Code:


Session.Query.All<testmain>().Where( m => m.TestSubAs.Any( a => a.Val == 1 ) && m.TestSubBs.Any( b => b.Val == 2 ) ).ToList();

Exception:


Xtensive.Orm.SyntaxErrorException was unhandled Message=SQL error occured. SQL error details 'Type: SyntaxError;' Query 'SELECT [a].[Id], [a].[TypeId], [a].[Val] FROM (SELECT [b].[Id], [b].[TypeId], [b].[Val], (SELECT CAST((CASE WHEN EXISTS (SELECT * FROM [TestMain-TestSubAs-TestSubA] [c] INNER JOIN [TestSubA] [d] ON ([c].[TestSubA] = [d].[Id]) WHERE (([c].[TestMain] = [b].[Id]) AND ([d].[Val] = 1))) THEN 1 ELSE 0 END) AS bit)) AS [c01umn] FROM (SELECT [e].[Id], 191 AS [TypeId], [e].[Val] FROM [TestMain] [e]) [b]) [a] WHERE (([a].[c01umn] <> 0) AND EXISTS (SELECT * FROM [TestMain-TestSubBs-TestSubB] [f] INNER JOIN [TestSubB] [g] ON ([f].[TestSubB] = [g].[Id]) WHERE (([f].[TestMain] = [a].[Id]) AND ([g].[Val] = 2))));' Original message 'There was an error parsing the query. [ Token line number = 1,Token line offset = 91,Token in error = SELECT ]' Source=Xtensive.Orm StackTrace: at Xtensive.Orm.Providers.Sql.StorageDriver.ExecuteCommand[TResult](Session session, DbCommand command, Func2 action) at Xtensive.Orm.Providers.Sql.StorageDriver.ExecuteReader(Session session, DbCommand command) at Xtensive.Orm.Providers.Sql.Command.ExecuteReader() at Xtensive.Orm.Providers.Sql.SimpleCommandProcessor.ExecuteTasksWithReader(QueryRequest lastRequest) at Xtensive.Orm.Providers.Sql.SessionHandler.<Xtensive.Orm.Providers.Sql.IQueryExecutor.ExecuteTupleReader>d__0.MoveNext() at Xtensive.Orm.Providers.Sql.SqlProvider.<OnEnumerate>d__9.MoveNext() at Xtensive.Orm.Rse.Providers.ExecutableProvider.<GetEnumerator>d__0.MoveNext() at Xtensive.Core.EnumerableExtensions.<Batch>d__201.MoveNext() at Xtensive.Core.EnumerableExtensions.<applybeforeandafter>d281.MoveNext() at Xtensive.Orm.Rse.RecordSet.<GetBatchedEnumerator>d__c.MoveNext() at System.Linq.Enumerable.WhereSelectEnumerableIterator2.MoveNext() at Xtensive.Core.EnumerableExtensions.<batch>d201.MoveNext() at Xtensive.Core.EnumerableExtensions.<ApplyBeforeAndAfter>d__281.MoveNext() at System.Linq.Enumerable.<selectmanyiterator>d142.MoveNext() at System.Collections.Generic.List1..ctor(IEnumerable1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable1 source) InnerException: System.Data.SqlServerCe.SqlCeException Message=There was an error parsing the query. [ Token line number = 1,Token line offset = 91,Token in error = SELECT ] Source=SQL Server Compact ADO.NET Data Provider HResult=-2147217900 NativeError=25501 StackTrace: at System.Data.SqlServerCe.SqlCeCommand.CompileQueryPlan() at System.Data.SqlServerCe.SqlCeCommand.ExecuteCommand(CommandBehavior behavior, String method, ResultSetOptions options) at System.Data.SqlServerCe.SqlCeCommand.ExecuteReader(CommandBehavior behavior) at System.Data.SqlServerCe.SqlCeCommand.ExecuteDbDataReader(CommandBehavior behavior) at System.Data.Common.DbCommand.ExecuteReader() at Xtensive.Orm.Providers.Sql.StorageDriver.<executereader>b4(DbCommand c) at Xtensive.Orm.Providers.Sql.StorageDriver.ExecuteCommandTResult

asked Jul 21 '12 at 04:44

TeaMan's gravatar image

TeaMan
140141418

edited Jul 21 '12 at 04:46

Hello TeaMan,

Thanks for the model and the query. It will help us to reproduce the issue. I'll notify you of any news.

(Jul 23 '12 at 08:14) Dmitri Maximov Dmitri%20Maximov's gravatar image
Be the first one to answer this question!
Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
toggle preview

powered by OSQA