This question is locked. New answers and comments are not allowed.
Hello,
I have just started learning Telerik ORM (was using LLBLGen earlier).
I am trying to join 2 tables in following query and I get an error. However, individually, they run fine. Can you shed some insight on this?
I get following error
This works fine
This works fine too
This is my first project using Telerik Orm and I am using Database first.
Thanks,
B
I have just started learning Telerik ORM (was using LLBLGen earlier).
I am trying to join 2 tables in following query and I get an error. However, individually, they run fine. Can you shed some insight on this?
Dim
context = ContextFactory.GetContextPerRequest
Dim
query = (From c
In
context.GetAll(Of FaqCategory)(), i
In
context.GetAll(Of FaqItem)()
Where c.Id = i.CategoryId
Order By c.OrderNo, i.OrderNo
Select
c.CategoryName, i.Question, i.Answer).ToList
I get following error
An exception occured during the execution of
'Extent<Saadhana.DataLayer.FaqCategory>().SelectMany(c => Convert(value(Saadhana.BusinessLayer.DBHelperClasses.FaqHelper+_Closure$__1).$VB$Local_context.GetAll()), (c, i) => new VB$AnonymousType_0`2(c = c, i = i)).Where($VB$It => ($VB$It.c.Id == $VB$It.i.CategoryId)).OrderBy($VB$It => $VB$It.c.OrderNo).ThenBy($VB$It => $VB$It.i.OrderNo).Select($VB$It => new VB$AnonymousType_1`3(CategoryName = $VB$It.c.CategoryName, Question = $VB$It.i.Question, Answer = $VB$It.i.Answer))'. Failure: Unable to formulate a join to express the SelectMany(c => Param{3}-IEnumerable`1).
See InnerException for more details.
Complete Expression:
.
Call
System.Linq.Queryable.
Select
(
.
Call
System.Linq.Queryable.ThenBy(
.
Call
System.Linq.Queryable.OrderBy(
.
Call
System.Linq.Queryable.Where(
.
Call
System.Linq.Queryable.SelectMany(
.Constant<Telerik.OpenAccess.Query.ExtentQueryImpl`1[Saadhana.DataLayer.FaqCategory]>(Extent<Saadhana.DataLayer.FaqCategory>()),
'(.Lambda #Lambda1<System.Func`2[Saadhana.DataLayer.FaqCategory,System.Collections.Generic.IEnumerable`1[Saadhana.DataLayer.FaqItem]]>),
'(.Lambda #Lambda2<System.Func`3[Saadhana.DataLayer.FaqCategory,Saadhana.DataLayer.FaqItem,VB$AnonymousType_0`2[Saadhana.DataLayer.FaqCategory,Saadhana.DataLayer.FaqItem]]>))
,
'(.Lambda #Lambda3<System.Func`2[VB$AnonymousType_0`2[Saadhana.DataLayer.FaqCategory,Saadhana.DataLayer.FaqItem],System.Boolean]>))
,
'(.Lambda #Lambda4<System.Func`2[VB$AnonymousType_0`2[Saadhana.DataLayer.FaqCategory,Saadhana.DataLayer.FaqItem],System.Int32]>))
,
'(.Lambda #Lambda5<System.Func`2[VB$AnonymousType_0`2[Saadhana.DataLayer.FaqCategory,Saadhana.DataLayer.FaqItem],System.Int32]>))
,
'(.Lambda #Lambda6<System.Func`2[VB$AnonymousType_0`2[Saadhana.DataLayer.FaqCategory,Saadhana.DataLayer.FaqItem],VB$AnonymousType_1`3[System.String,System.String,System.String]]>))
.Lambda #Lambda1<System.Func`2[Saadhana.DataLayer.FaqCategory,System.Collections.Generic.IEnumerable`1[Saadhana.DataLayer.FaqItem]]>(Saadhana.DataLayer.FaqCategory $c)
{
(System.Collections.Generic.IEnumerable`1[Saadhana.DataLayer.FaqItem]).
Call
(.Constant<Saadhana.BusinessLayer.DBHelperClasses.FaqHelper+_Closure$__1>(Saadhana.BusinessLayer.DBHelperClasses.FaqHelper+_Closure$__1).$VB$Local_context).GetAll()
}
.Lambda #Lambda2<System.Func`3[Saadhana.DataLayer.FaqCategory,Saadhana.DataLayer.FaqItem,VB$AnonymousType_0`2[Saadhana.DataLayer.FaqCategory,Saadhana.DataLayer.FaqItem]]>(
Saadhana.DataLayer.FaqCategory $c,
Saadhana.DataLayer.FaqItem $i) {
.
New
VB$AnonymousType_0`2[Saadhana.DataLayer.FaqCategory,Saadhana.DataLayer.FaqItem](
$c,
$i)
}
.Lambda #Lambda3<System.Func`2[VB$AnonymousType_0`2[Saadhana.DataLayer.FaqCategory,Saadhana.DataLayer.FaqItem],System.
Boolean
]>(VB$AnonymousType_0`2[Saadhana.DataLayer.FaqCategory,Saadhana.DataLayer.FaqItem] $$VB$It)
{
($$VB$It.c).Id == ($$VB$It.i).CategoryId
}
.Lambda #Lambda4<System.Func`2[VB$AnonymousType_0`2[Saadhana.DataLayer.FaqCategory,Saadhana.DataLayer.FaqItem],System.Int32]>(VB$AnonymousType_0`2[Saadhana.DataLayer.FaqCategory,Saadhana.DataLayer.FaqItem] $$VB$It)
{
($$VB$It.c).OrderNo
}
.Lambda #Lambda5<System.Func`2[VB$AnonymousType_0`2[Saadhana.DataLayer.FaqCategory,Saadhana.DataLayer.FaqItem],System.Int32]>(VB$AnonymousType_0`2[Saadhana.DataLayer.FaqCategory,Saadhana.DataLayer.FaqItem] $$VB$It)
{
($$VB$It.i).OrderNo
}
.Lambda #Lambda6<System.Func`2[VB$AnonymousType_0`2[Saadhana.DataLayer.FaqCategory,Saadhana.DataLayer.FaqItem],VB$AnonymousType_1`3[System.
String
,System.
String
,System.
String
]]>(VB$AnonymousType_0`2[Saadhana.DataLayer.FaqCategory,Saadhana.DataLayer.FaqItem] $$VB$It)
{
.
New
VB$AnonymousType_1`3[System.
String
,System.
String
,System.
String
](
($$VB$It.c).CategoryName,
($$VB$It.i).Question,
($$VB$It.i).Answer)
}
This works fine
Dim
query = (From c
In
context.GetAll(Of FaqCategory)()
Order By c.OrderNo
Select
c.CategoryName).ToList
This works fine too
Dim
query = (From c
In
context.FaqCategories, i
In
context.FaqItems
Where c.Id = i.CategoryId
Order By c.OrderNo, i.OrderNo
Select
c.CategoryName, i.Question, i.Answer).ToList
This is my first project using Telerik Orm and I am using Database first.
Thanks,
B