... and if I execute the same query

context.Categories.Where(x => x.CategoryID == 1).SelectMany(x => x.Products)

using NH directly (not via OData service), it works fine. The error happens
only if send the query through WCF Data Service, and only if I use
NHibernate. With EF this is not a problem.

Vagif

On Mon, May 9, 2011 at 11:31 PM, Vagif Abilov <[email protected]>wrote:

> Hi Ricardo,
>
> Projection is enabled in my service and if I use Entity Framework instead
> of NH, the following query works fine:
>
> Categories.Where(x => x.CategoryID == 1).SelectMany(x => x.Products)
>
> But NH returns me the following error:
>
> <message>element.Products is not mapped
> [.SelectMany[Northwind.NHibernate.MsSql.Categories,Northwind.NHibernate.MsSql.Products](.Where[Northwind.NHibernate.MsSql.Categories](NHibernate.Linq.NhQueryable`1[Northwind.NHibernate.MsSql.Categories],
> Quote((element, ) =&gt; (Equal(element.CategoryID, p1))), ), Quote((element,
> ) =&gt; (Convert(element.Products))), )]</message>
> <type>NHibernate.Hql.Ast.ANTLR.QuerySyntaxException</type>
>
> What I can do is to issue other query that works:
> Categories.Expand("Products").Where(x => x.CategoryID == 1)
>
> But this one does not project Products, it just includes them in the result
> set. So I wonder if DataService needs more tweaking for NHibernate to
> correctly handle projection.
>
> Vagif
>
>
>
>
> On Mon, May 9, 2011 at 6:07 PM, Ricardo Peres <[email protected]> wrote:
>
>> WCF Data Services supports projections (server-side, not client-side,
>> this you can always do with LINQ to Objects), but you have to enable
>> them:
>>
>> public static void InitializeService(DataServiceConfiguration config)
>> {
>>    config.DataServiceBehavior.MaxProtocolVersion =
>> DataServiceProtocolVersion.V2;
>>    config.DataServiceBehavior.AcceptProjectionRequests = true;
>>    ...
>> }
>>
>> Also, I wrote a post on WCF Data Services debugging, a long time ago:
>>
>> http://weblogs.asp.net/ricardoperes/archive/2009/11/01/debugging-ado-net-data-services.aspx
>>
>> RP
>>
>> On May 9, 2:47 pm, Vagif Abilov <[email protected]> wrote:
>> > Hi,
>> >
>> > After resolving my issue with navigation to referenced entities (thanks
>> > Ricardo), I am now testing possibility to fetch in OData only referenced
>> > entities. The following query fetches main entity and it's Products
>> > relation:
>> > Categories.Expand("Products").Where(c => c.CategoryID == 1)
>> > (corresponds
>> tohttp://localhost:50555/NorthwindEntityFrameworkModelFirstMsSql.svc/Ca...
>> > )
>> >
>> > This is not what I want: I only need Products. I don't want to do
>> projection
>> > on the client.
>> >
>> > When using Entity Framework, I can use the following (weird) C# syntax
>> in
>> > client code:
>> > from c in Categories.Where(c => c.CategoryID == 1) select new { Products
>> =
>> > c.Products }
>> >
>> > But this does not work in NHibernate! I am getting NotImplemented
>> exception:
>> >
>> > <message xml:lang="nb-NO">Not Implemented</message>
>> >   <innererror>
>> >     <message>([100001] As Categories)</message>
>> >     <type>System.NotSupportedException</type>
>> > ...
>> > </message>
>> >
>> > And using Expand("Products") does not seem to support projections:
>> > Categories.Expand("Products").Where(c => c.CategoryID == 1).Select(x =>
>> > x.Products) results in "The method 'Select' is not supported." both for
>> > NHibernate and Entity Framework.
>> >
>> > Do you know about any workaround for this that will work in NHibernate?
>> >
>> > Thanks in advance
>> >
>> > Vagif
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "nhusers" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected].
>> For more options, visit this group at
>> http://groups.google.com/group/nhusers?hl=en.
>>
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/nhusers?hl=en.

Reply via email to