Add ability to expand many subcollections with WCF Data Services
Description
Environment
None
Activity
Show:

Alex Zaytsev September 8, 2014 at 11:32 AM
Close issues resolved in 3.3.3

Alex Zaytsev January 26, 2013 at 1:08 PM
Ported-back to 3.3.x fd0842119f9ec8af0c4b648506dd5586386657b0

Alex Zaytsev January 26, 2013 at 1:07 PM
Fixed in master f0c95ac2ba75bc2607eee29e20e18c48e5b3c85c

Alex Zaytsev January 26, 2013 at 12:28 AM
See

Jerome Haltom January 26, 2013 at 12:27 AM
In fact, this whole select statement is screwed up. A sub-select cannot contain multiple columns.
Fixed
Details
Details
Assignee

Reporter

Labels
Components
Fix versions
Affects versions
Priority
Who's Looking?
Open Who's Looking?
Created January 26, 2013 at 12:24 AM
Updated September 8, 2014 at 11:32 AM
Resolved January 26, 2013 at 1:08 PM
Who's Looking?
Okay. I haven't the faintest idea where this issue is. So I'm just going to report what I have. I have the following expression tree. It is generating the follow SQL. The SQL has a stray '.' floating in the middle of it.
.Call System.Linq.Queryable.Select(
.Call System.Linq.Queryable.Where(
.Constant<NHibernate.Linq.NhQueryable`1[ISIS.Data.Core.CampaignJob]>(NHibernate.Linq.NhQueryable`1[ISIS.Data.Core.CampaignJob]),
'(.Lambda #Lambda1<System.Func`2[ISIS.Data.Core.CampaignJob,System.Boolean]>)),
'(.Lambda #Lambda2<System.Func`2[ISIS.Data.Core.CampaignJob,System.Data.Services.Internal.ExpandedWrapper`2[ISIS.Data.Core.CampaignJob,System.Collections.Generic.IEnumerable`1[System.Data.Services.Internal.ExpandedWrapper`3[ISIS.Data.Core.Campaign,System.Data.Services.Internal.ExpandedWrapper`3[ISIS.Data.Core.ClientProduct,ISIS.Data.Core.Product,System.Data.Services.Internal.ExpandedWrapper`2[ISIS.Data.Core.Client,ISIS.Data.Core.Business]],System.Collections.Generic.IEnumerable`1[ISIS.Data.Core.CampaignSegment]]]]]>))
.Lambda #Lambda1<System.Func`2[ISIS.Data.Core.CampaignJob,System.Boolean]>(ISIS.Data.Core.CampaignJob $element) {
$element.Id == .Constant<System.Guid>(6c4e37fd-e357-42b1-8564-a09900e2e52e)
}
.Lambda #Lambda2<System.Func`2[ISIS.Data.Core.CampaignJob,System.Data.Services.Internal.ExpandedWrapper`2[ISIS.Data.Core.CampaignJob,System.Collections.Generic.IEnumerable`1[System.Data.Services.Internal.ExpandedWrapper`3[ISIS.Data.Core.Campaign,System.Data.Services.Internal.ExpandedWrapper`3[ISIS.Data.Core.ClientProduct,ISIS.Data.Core.Product,System.Data.Services.Internal.ExpandedWrapper`2[ISIS.Data.Core.Client,ISIS.Data.Core.Business]],System.Collections.Generic.IEnumerable`1[ISIS.Data.Core.CampaignSegment]]]]]>(ISIS.Data.Core.CampaignJob $p)
{
.New System.Data.Services.Internal.ExpandedWrapper`2[ISIS.Data.Core.CampaignJob,System.Collections.Generic.IEnumerable`1[System.Data.Services.Internal.ExpandedWrapper`3[ISIS.Data.Core.Campaign,System.Data.Services.Internal.ExpandedWrapper`3[ISIS.Data.Core.ClientProduct,ISIS.Data.Core.Product,System.Data.Services.Internal.ExpandedWrapper`2[ISIS.Data.Core.Client,ISIS.Data.Core.Business]],System.Collections.Generic.IEnumerable`1[ISIS.Data.Core.CampaignSegment]]]]()
{
ExpandedElement = $p,
Description = "Campaigns",
ReferenceDescription = "",
ProjectedProperty0 = .Call System.Linq.Enumerable.Select(
$p.Campaigns,
.Lambda #Lambda3<System.Func`2[ISIS.Data.Core.Campaign,System.Data.Services.Internal.ExpandedWrapper`3[ISIS.Data.Core.Campaign,System.Data.Services.Internal.ExpandedWrapper`3[ISIS.Data.Core.ClientProduct,ISIS.Data.Core.Product,System.Data.Services.Internal.ExpandedWrapper`2[ISIS.Data.Core.Client,ISIS.Data.Core.Business]],System.Collections.Generic.IEnumerable`1[ISIS.Data.Core.CampaignSegment]]]>)
}
}
.Lambda #Lambda3<System.Func`2[ISIS.Data.Core.Campaign,System.Data.Services.Internal.ExpandedWrapper`3[ISIS.Data.Core.Campaign,System.Data.Services.Internal.ExpandedWrapper`3[ISIS.Data.Core.ClientProduct,ISIS.Data.Core.Product,System.Data.Services.Internal.ExpandedWrapper`2[ISIS.Data.Core.Client,ISIS.Data.Core.Business]],System.Collections.Generic.IEnumerable`1[ISIS.Data.Core.CampaignSegment]]]>(ISIS.Data.Core.Campaign $p)
{
.New System.Data.Services.Internal.ExpandedWrapper`3[ISIS.Data.Core.Campaign,System.Data.Services.Internal.ExpandedWrapper`3[ISIS.Data.Core.ClientProduct,ISIS.Data.Core.Product,System.Data.Services.Internal.ExpandedWrapper`2[ISIS.Data.Core.Client,ISIS.Data.Core.Business]],System.Collections.Generic.IEnumerable`1[ISIS.Data.Core.CampaignSegment]]()
{
ExpandedElement = $p,
Description = "ClientProduct,Segments",
ReferenceDescription = "ClientProduct",
ProjectedProperty0 = .New System.Data.Services.Internal.ExpandedWrapper`3[ISIS.Data.Core.ClientProduct,ISIS.Data.Core.Product,System.Data.Services.Internal.ExpandedWrapper`2[ISIS.Data.Core.Client,ISIS.Data.Core.Business]]()
{
ExpandedElement = $p.ClientProduct,
Description = "Product,Client",
ReferenceDescription = "Product,Client",
ProjectedProperty0 = .If ($p.ClientProduct == null) {
null
} .Else {
($p.ClientProduct).Product
},
ProjectedProperty1 = .If ($p.ClientProduct == null) {
null
} .Else {
.New System.Data.Services.Internal.ExpandedWrapper`2[ISIS.Data.Core.Client,ISIS.Data.Core.Business](){
ExpandedElement = ($p.ClientProduct).Client,
Description = "Business",
ReferenceDescription = "Business",
ProjectedProperty0 = .If (($p.ClientProduct).Client == null) {
null
} .Else {
(($p.ClientProduct).Client).Business
}
}
}
},
ProjectedProperty1 = $p.CampaignSegments
}
}
select campaignjo0_.Id as col_0_0_,
(select campaigns1_.IntId, clientprod2_.IntId, clientprod2_.IntId, product3_.ProductId, clientprod2_.IntId, client4_.Id, client4_.Id, business5_.UniqueId, .
from Campaign campaigns1_ left outer join ClientProduct clientprod2_
on campaigns1_.ClientProductId=clientprod2_.Id
left outer join Product product3_
/* whole bunch of joins */
where campaignjo0_.Id=campaigns1_.CampaignJobId and campaigns1_.Id=campaignse6_.CampaignId) as col_1_0_,
/* lots of columns */
from CampaignJob campaignjo0_
where campaignjo0_.Id=@p0