Incorrect SQL translation:
Wrong SELECT before CAST -> Cols 144 and 380!
Exception:
Xtensive.Orm.SyntaxErrorException was unhandled
Message=SQL error occured.
SQL error details 'Type: SyntaxError;'
Query 'SELECT [a].[Id], [a].[TypeId], [a].[Name], [a].[Name2], [a].[Val] FROM (SELECT [b].[Id], 194 AS [TypeId], [b].[Name], [b].[Name2], [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], (SELECT CAST((CASE WHEN EXISTS (SELECT * FROM [TestMain-TestSubBs-TestSubB] [e] INNER JOIN [TestSubB] [f] ON ([e].[TestSubB] = [f].[Id]) WHERE (([e].[TestMain] = [b].[Id]) AND ([f].[Val] = 2))) THEN 1 ELSE 0 END) AS bit)) AS [c01umn1], (CASE WHEN (([b].[Name2] IS NULL) OR ((DATALENGTH(LTRIM(RTRIM([b].[Name2]))) / 2) = 0)) THEN [b].[Name] ELSE [b].[Name2] END) AS [c01umn2] FROM [TestMain] [b] WHERE (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))) AND EXISTS (SELECT * FROM [TestMain-TestSubBs-TestSubB] [e] INNER JOIN [TestSubB] [f] ON ([e].[TestSubB] = [f].[Id]) WHERE (([e].[TestMain] = [b].[Id]) AND ([f].[Val] = 2))))) [a] ORDER BY [a].[c01umn2] ASC;'
Original message 'There was an error parsing the query. [ Token line number = 1,Token line offset = 144,Token in error = SELECT ]'
Source=Xtensive.Orm
Entities:
[Serializable]
[HierarchyRoot]
public class TestMain : Entity
{
public TestMain( Session session ) : base( session ) { }
[Field, Key]
public int Id { get; private set; }
[Field]
public string Name { get; set; }
[Field]
public string Name2 { get; 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; }
}
Query:
Session.Query.All<TestMain>()
.Where( m => m.TestSubAs.Any( a => a.Val == 1 ) &&
m.TestSubBs.Any( b => b.Val == 2 ) )
.OrderBy( m => m.Name2 == null || m.Name2.Trim().Length == 0 ?
m.Name : m.Name2 ).ToList();
asked
Sep 17 '12 at 05:50
TeaMan
140●14●14●18