Error in LINQ Sub Select

244 views
Skip to first unread message

Rogério Augusto

unread,
Jul 13, 2010, 9:02:51 AM7/13/10
to Business Logic Toolkit for .NET
I has the followings classes:

[TableName("tabfixa.uf")]
public class Uf
{
[PrimaryKey]
public string Id { get; set; }
public string Nome { get; set; }
public int Id_Pais { get; set; }
}

[TableName("tabfixa.pais")]
public class Pais
{
[PrimaryKey]
public int Id { get; set; }
public string Nome { get; set; }
public string CodigoIbge { get; set; }

[Association(ThisKey = "Id", OtherKey = "Id_Pais")]
public IEnumerable<SistemaEntities.Uf> Ufs { get; set; }
}

When I execute the LINQ:

var _pais = from p in db.Pais
select new SistemaEntities.Pais
{
Id = p.Id,
Nome = p.Nome,
CodigoIbge = p.CodigoIbge,
Ufs = (from u in db.Uf
where u.Id_Pais == p.Id
select u)
};

gridControl1.DataSource = _pais.ToList();

The erro is posted:

---------------------------

---------------------------
BLToolkit.Data.Linq.LinqException: Cannot find converter for the
'System.Linq.IQueryable`1[[WindowsFormsApplication2.SistemaEntities
+Uf, WindowsFormsApplication2, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null]]' type.

at BLToolkit.Data.Linq.ExpressionParser`1.BuildField(Expression ma,
Int32[] idx) in C:\tmp\bltgen\Source\Data\Linq
\ExpressionParser.QueryBuilder.cs:line 1064

at BLToolkit.Data.Linq.ExpressionParser`1.BuildSubQuery(Expression
expr, QuerySource query, Func`2 converter) in C:\tmp\bltgen\Source\Data
\Linq\ExpressionParser.QueryBuilder.cs:line 589

at
BLToolkit.Data.Linq.ExpressionParser`1.<>c__DisplayClassfc.<BuildNewExpression>b__fa(Expression
pi) in C:\tmp\bltgen\Source\Data\Linq
\ExpressionParser.QueryBuilder.cs:line 523

at BLToolkit.Data.Linq.ExpressionHelper.Convert(Expression expr,
Func`2 func) in C:\tmp\bltgen\Source\Data\Linq
\ExpressionHelper.cs:line 1369

at
BLToolkit.Data.Linq.ExpressionHelper.<>c__DisplayClass7f.<Convert>b__7a(MemberBinding
b) in C:\tmp\bltgen\Source\Data\Linq\ExpressionHelper.cs:line 1468

at BLToolkit.Data.Linq.ExpressionHelper.Convert[T](IEnumerable`1
source, Func`2 func) in C:\tmp\bltgen\Source\Data\Linq
\ExpressionHelper.cs:line 1275

at BLToolkit.Data.Linq.ExpressionHelper.Convert(Expression expr,
Func`2 func) in C:\tmp\bltgen\Source\Data\Linq
\ExpressionHelper.cs:line 1508

at
BLToolkit.Data.Linq.ExpressionParser`1.BuildNewExpression(LambdaInfo
lambda, QuerySource query, Expression expr, Func`2 converter) in C:\tmp
\bltgen\Source\Data\Linq\ExpressionParser.QueryBuilder.cs:line 357

at BLToolkit.Data.Linq.ExpressionParser`1.BuildNew(QuerySource
query, LambdaInfo lambda, Expression expr, Func`2 converter) in C:\tmp
\bltgen\Source\Data\Linq\ExpressionParser.QueryBuilder.cs:line 99

at
BLToolkit.Data.Linq.ExpressionParser`1.<>c__DisplayClasse3.<BuildSelect>b__de(Expr
expr) in C:\tmp\bltgen\Source\Data\Linq
\ExpressionParser.QueryBuilder.cs:line 75

at BLToolkit.Data.Linq.QuerySource.Match(Action`1 tableAction,
Action`1 exprAction, Action`1 subQueryAction, Action`1 scalarAction,
Action`1 groupByAction, Action`1 columnAction) in C:\tmp\bltgen\Source
\Data\Linq\QuerySource.cs:line 1267

at BLToolkit.Data.Linq.ExpressionParser`1.BuildSelect(QuerySource
query, Expression ex, Func`2 converter) in C:\tmp\bltgen\Source\Data
\Linq\ExpressionParser.QueryBuilder.cs:line 72

at BLToolkit.Data.Linq.ExpressionParser`1.<Parse>b__c(Expression
pi) in C:\tmp\bltgen\Source\Data\Linq\ExpressionParser.Parsing.cs:line
118

at BLToolkit.Data.Linq.ExpressionHelper.Match[T](T expr, Func`2[]
matches) in C:\tmp\bltgen\Source\Data\Linq\ExpressionHelper.cs:line
388

at BLToolkit.Data.Linq.ExpressionParser`1.Parse(String contextID,
MappingSchema mappingSchema, Func`1 createSqlProvider, Expression
expression, ParameterExpression[] parameters) in C:\tmp\bltgen\Source
\Data\Linq\ExpressionParser.Parsing.cs:line 85

at BLToolkit.Data.Linq.ExpressionInfo`1.GetExpressionInfo(String
contextID, MappingSchema mappingSchema, Func`1 sqlProvider, Expression
expr) in C:\tmp\bltgen\Source\Data\Linq\ExpressionInfo.cs:line 58

at BLToolkit.Data.Linq.Table`1.GetExpressionInfo(Expression
expression, Boolean cache) in C:\tmp\bltgen\Source\Data\Linq
\TableT.cs:line 91

at BLToolkit.Data.Linq.Table`1.Execute(IDataContext dataContext,
Expression expression) in C:\tmp\bltgen\Source\Data\Linq
\TableT.cs:line 79

at
BLToolkit.Data.Linq.Table`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()
in C:\tmp\bltgen\Source\Data\Linq\TableT.cs:line 178

at System.Collections.Generic.List`1..ctor(IEnumerable`1
collection)

at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)

at WindowsFormsApplication2.Form1.Form1_Load(Object sender,
EventArgs e) in C:\Users\rogerio\Documents\Visual Studio 2010\Projects
\WindowsFormsApplication2\WindowsFormsApplication2\Form1.cs:line 44
---------------------------
OK
---------------------------

Anywhere solution?

Regards,

Rogério Bassete

Using BLTollKit4.0 and PostgreSQL

IT

unread,
Jul 13, 2010, 10:40:40 PM7/13/10
to Business Logic Toolkit for .NET
This feature is not supported yet.

shur...@gmail.com

unread,
Dec 27, 2012, 1:09:24 AM12/27/12
to blto...@googlegroups.com
Now?

среда, 14 июля 2010 г., 9:40:40 UTC+7 пользователь IT написал:

anton...@gmail.com

unread,
Feb 15, 2013, 10:56:19 AM2/15/13
to blto...@googlegroups.com, rogerio...@gmail.com
Hi.

BLToolkit.Common.Configuration.Linq.AllowMultipleQuery = true;
 var _pais = from p in db.Pais 
                                select new SistemaEntities.Pais 
                                { 
                                    Id = p.Id, 
                                    Nome = p.Nome, 
                                    CodigoIbge = p.CodigoIbge, 
                                    Ufs = (from u in db.Uf 
                                           where u.Id_Pais == p.Id 
                                           select u).ToList() 
                                }; 

It will be works)

вторник, 13 июля 2010 г., 16:02:51 UTC+3 пользователь Rogério Augusto написал:
Reply all
Reply to author
Forward
0 new messages