jonpryor / dblinq2007

Automatically exported from code.google.com/p/dblinq2007
0 stars 0 forks source link

S0536: Expected a TableExpression for Join #168

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. Restore attached database
2. Run attached query in Program.cs (linq.cs contains generated classes 
from DbMetal)

What is the expected output? 
- data

What do you see instead?
- S0536: Expected a TableExpression for Join

   at 
DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.AnalyzeJoin
(IList`1 parameters, TableJoinType joinType, BuilderContext 
builderContext) in E:\_Temp\DbLinq\src\DbLinq\Data\Linq\Sugar
\Implementation\ExpressionDispatcher.Analyzer.cs:line 1258
   at 
DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.AnalyzeJoin
(IList`1 parameters, BuilderContext builderContext) in E:\_Temp\DbLinq\src
\DbLinq\Data\Linq\Sugar\Implementation
\ExpressionDispatcher.Analyzer.cs:line 1225
   at 
DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.AnalyzeQueryableCall
(MethodInfo method, IList`1 parameters, BuilderContext builderContext) in 
E:\_Temp\DbLinq\src\DbLinq\Data\Linq\Sugar\Implementation
\ExpressionDispatcher.Analyzer.cs:line 222
   at 
DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.AnalyzeCall
(MethodCallExpression expression, IList`1 parameters, BuilderContext 
builderContext) in E:\_Temp\DbLinq\src\DbLinq\Data\Linq\Sugar
\Implementation\ExpressionDispatcher.Analyzer.cs:line 178
   at DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.Analyze
(Expression expression, IList`1 parameters, BuilderContext builderContext) 
in E:\_Temp\DbLinq\src\DbLinq\Data\Linq\Sugar\Implementation
\ExpressionDispatcher.Analyzer.cs:line 109
   at DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.Analyze
(Expression expression, BuilderContext builderContext) in E:\_Temp\DbLinq
\src\DbLinq\Data\Linq\Sugar\Implementation
\ExpressionDispatcher.Analyzer.cs:line 101
   at 
DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.AnalyzeOperator
(Expression expression, BuilderContext builderContext) in E:\_Temp\DbLinq
\src\DbLinq\Data\Linq\Sugar\Implementation
\ExpressionDispatcher.Analyzer.cs:line 1109
   at DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.Analyze
(Expression expression, IList`1 parameters, BuilderContext builderContext) 
in E:\_Temp\DbLinq\src\DbLinq\Data\Linq\Sugar\Implementation
\ExpressionDispatcher.Analyzer.cs:line 153
   at DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.Analyze
(Expression expression, BuilderContext builderContext) in E:\_Temp\DbLinq
\src\DbLinq\Data\Linq\Sugar\Implementation
\ExpressionDispatcher.Analyzer.cs:line 101
   at 
DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.AnalyzeLambda
(Expression expression, IList`1 parameters, BuilderContext builderContext) 
in E:\_Temp\DbLinq\src\DbLinq\Data\Linq\Sugar\Implementation
\ExpressionDispatcher.Analyzer.cs:line 713
   at DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.Analyze
(Expression expression, IList`1 parameters, BuilderContext builderContext) 
in E:\_Temp\DbLinq\src\DbLinq\Data\Linq\Sugar\Implementation
\ExpressionDispatcher.Analyzer.cs:line 111
   at 
DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.AnalyzeQuote
(Expression piece, IList`1 parameters, BuilderContext builderContext) in E:
\_Temp\DbLinq\src\DbLinq\Data\Linq\Sugar\Implementation
\ExpressionDispatcher.Analyzer.cs:line 1072
   at DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.Analyze
(Expression expression, IList`1 parameters, BuilderContext builderContext) 
in E:\_Temp\DbLinq\src\DbLinq\Data\Linq\Sugar\Implementation
\ExpressionDispatcher.Analyzer.cs:line 115
   at DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.Analyze
(Expression expression, Expression parameter, BuilderContext 
builderContext) in E:\_Temp\DbLinq\src\DbLinq\Data\Linq\Sugar
\Implementation\ExpressionDispatcher.Analyzer.cs:line 96
   at 
DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.AnalyzeSelect
(IList`1 parameters, BuilderContext builderContext) in E:\_Temp\DbLinq\src
\DbLinq\Data\Linq\Sugar\Implementation
\ExpressionDispatcher.Analyzer.cs:line 662
   at 
DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.AnalyzeQueryableCall
(MethodInfo method, IList`1 parameters, BuilderContext builderContext) in 
E:\_Temp\DbLinq\src\DbLinq\Data\Linq\Sugar\Implementation
\ExpressionDispatcher.Analyzer.cs:line 236
   at 
DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.AnalyzeCall
(MethodCallExpression expression, IList`1 parameters, BuilderContext 
builderContext) in E:\_Temp\DbLinq\src\DbLinq\Data\Linq\Sugar
\Implementation\ExpressionDispatcher.Analyzer.cs:line 178
   at DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.Analyze
(Expression expression, IList`1 parameters, BuilderContext builderContext) 
in E:\_Temp\DbLinq\src\DbLinq\Data\Linq\Sugar\Implementation
\ExpressionDispatcher.Analyzer.cs:line 109
   at DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.Analyze
(Expression expression, Expression parameter, BuilderContext 
builderContext) in E:\_Temp\DbLinq\src\DbLinq\Data\Linq\Sugar
\Implementation\ExpressionDispatcher.Analyzer.cs:line 96
   at DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.Analyze
(ExpressionChain expressions, Expression parameter, BuilderContext 
builderContext) in E:\_Temp\DbLinq\src\DbLinq\Data\Linq\Sugar
\Implementation\ExpressionDispatcher.Analyzer.cs:line 73
   at 
DbLinq.Data.Linq.Sugar.Implementation.QueryBuilder.BuildExpressionQuery
(ExpressionChain expressions, Expression tableExpression, BuilderContext 
builderContext) in E:\_Temp\DbLinq\src\DbLinq\Data\Linq\Sugar
\Implementation\QueryBuilder.cs:line 203
   at 
DbLinq.Data.Linq.Sugar.Implementation.QueryBuilder.BuildExpressionQuery
(ExpressionChain expressions, BuilderContext builderContext) in E:\_Temp
\DbLinq\src\DbLinq\Data\Linq\Sugar\Implementation\QueryBuilder.cs:line 182
   at 
DbLinq.Data.Linq.Sugar.Implementation.QueryBuilder.BuildExpressionQuery
(ExpressionChain expressions, QueryContext queryContext) in E:\_Temp\DbLinq
\src\DbLinq\Data\Linq\Sugar\Implementation\QueryBuilder.cs:line 76
   at DbLinq.Data.Linq.Sugar.Implementation.QueryBuilder.GetSelectQuery
(ExpressionChain expressions, QueryContext queryContext) in E:\_Temp\DbLinq
\src\DbLinq\Data\Linq\Sugar\Implementation\QueryBuilder.cs:line 393
   at DbLinq.Data.Linq.Implementation.QueryProvider`1.GetQuery(Expression 
expression) in E:\_Temp\DbLinq\src\DbLinq\Data\Linq\Implementation
\QueryProvider.cs:line 165
   at DbLinq.Data.Linq.Implementation.QueryProvider`1.GetEnumerator() in E:
\_Temp\DbLinq\src\DbLinq\Data\Linq\Implementation\QueryProvider.cs:line 215
   at DbLinq.MySql.Example.Program.Main(String[] args) in E:\_Temp\DbLinq
\examples\DbLinq.MySql.Example\Program.cs:line 68
   at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
   at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   at System.Threading.ExecutionContext.Run(ExecutionContext 
executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()

What version of the product are you using? On what operating system?
- compiled newest trunk version of DbLinq, Windows 7

Please provide any additional information below.
- When I try to run linq query like this:

var query = from q in context.Tools
                    where q.ID == 2
                    select new ToolObject
                    {
                        ID = q.ID,
                        Title = q.Title,
                        Categories = from x in q.ToolCategories
                                     join x1 in context.Categories on 
x.IdcAtegory equals x1.ID
                                     select new CategoryObject
                                     {
                                         ID = x1.ID,
                                         Title = x1.Title
                                     }
                    };

I get the "S0536: Expected a TableExpression for Join" exception. Very 
same linq query works with MS Linq to SQL.

Original issue reported on code.google.com by bosak.to...@gmail.com on 3 Dec 2009 at 1:53

Attachments:

GoogleCodeExporter commented 9 years ago
A Northwind-based test that exhibits the same error:

        [Test]
        public void NestedJoin()
        {
            var db = CreateDB();
            var q = from s in db.Suppliers
                    where s.SupplierID == 1
                    select new
                    {
                        ID = s.SupplierID,
                        Title = s.ContactTitle,
                        Products = from p in s.Products
                                   join pl in db.Products on s.SupplierID equals 
pl.SupplierID
                                   select new
                                   {
                                       ID = pl.ProductID,
                                       Name = pl.ProductName
                                   }
                    };
            foreach (var e in q)
            {
                Console.WriteLine("# ID={0}; Title={1}", e.ID, e.Title);
                foreach (var p in e.Products)
                {
                    Console.WriteLine ("#  ID={0}; Name={1}", p.ID, p.Name);
                }
            }
        }

Linq-to-SQL's output:

SELECT [t0].[SupplierID] AS [ID], [t0].[ContactTitle] AS [Title], 
[t3].[ProductID] AS 
[ID2], [t3].[ProductName] AS [Name], (
    SELECT COUNT(*)
    FROM [dbo].[Products] AS [t4]
    INNER JOIN [dbo].[Products] AS [t5] ON ([t0].[SupplierID]) = [t5].[SupplierID]
    WHERE [t4].[SupplierID] = [t0].[SupplierID]
    ) AS [value]
FROM [dbo].[Suppliers] AS [t0]
OUTER APPLY (
    SELECT [t2].[ProductID], [t2].[ProductName], [t1].[ProductID] AS [ProductID2]
    FROM [dbo].[Products] AS [t1]
    INNER JOIN [dbo].[Products] AS [t2] ON ([t0].[SupplierID]) = [t2].[SupplierID]
    WHERE [t1].[SupplierID] = [t0].[SupplierID]
    ) AS [t3]
WHERE [t0].[SupplierID] = @p0
ORDER BY [t0].[SupplierID], [t3].[ProductID2], [t3].[ProductID]
-- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) [1]
-- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 
3.5.30729.4926

# ID=1; Title=Purchasing Manager
#  ID=1; Name=Chai
#  ID=2; Name=Chang
#  ID=3; Name=Aniseed Syrup
#  ID=1; Name=Chai
#  ID=2; Name=Chang
#  ID=3; Name=Aniseed Syrup
#  ID=1; Name=Chai
#  ID=2; Name=Chang
#  ID=3; Name=Aniseed Syrup

Original comment by jonmpr...@gmail.com on 22 Jan 2010 at 9:31

GoogleCodeExporter commented 9 years ago
I've got the same problem. It's a long time since March 2009. Did you resolve 
it?

Original comment by haonv...@gmail.com on 18 Jan 2011 at 1:55

GoogleCodeExporter commented 9 years ago
Same problem here...

Original comment by zil...@hotmail.com on 16 Feb 2011 at 9:46