Gunnar: I just did that: https://nhibernate.jira.com/browse/NH-3354

It was (almost) immediately closed as a duplicate of 
https://nhibernate.jira.com/browse/NH-3333, so hopefully it will be 
resolved soon!

Paul: Just out of curiosity, which framework did you end up with, Entity 
Framework?

Thanks, Mattias

Den tisdagen den 11:e december 2012 kl. 00:35:41 UTC+1 skrev Gunnar Liljas:
>
> This group and the overall project is in much better shape today, than 
> it was just a year ago. 
>
> The error seems to be due to a malfunctioning projection, and is most 
> likely a bug in the Linq provider. It would be most helpful if you 
> could create a test case (the generated Linq expression is probably a 
> sufficient starting point) and file a JIRA report. 
>
>
>
> 2012/12/10 Paul Brousseau <[email protected] <javascript:>>: 
> > Hello Mattias! 
> > 
> > Unfortunately, no, I never resolved the problem.  And given the lack of 
> > response in this Google Group, I threw nHibernate out the window and 
> used a 
> > different framework instead.  As I recall, the problem existed some time 
> ago 
> > when I found it, and I'm pretty disappointed in the nHibernate project 
> to 
> > find that, a full year later, the problem still exists. 
> > 
> > Sorry I couldn't be of any help.  :( 
> > 
> > 
> > On Monday, December 10, 2012 12:51:21 AM UTC-8, scim wrote: 
> >> 
> >> Hi, Paul! 
> >> 
> >> I have the exact same problem as you when trying to execute a similar 
> >> query over odata. Have you managed to resolve the issue yet? 
> >> 
> >> I've narrowed it down to the same line of code as you, ie when it tries 
> to 
> >> transform the query to an ExpandedWrapper. Nhibernate tries to 
> transform 
> >> pairs of (in your case) Widget/Designer, however the Widgets-property 
> of 
> >> Designers expects an List of Widgets and not multiple instance of the 
> >> Widget. 
> >> 
> >> Thanks in advance, 
> >> Mattias 
> >> 
> >> Den fredagen den 16:e december 2011 kl. 21:12:26 UTC+1 skrev Paul: 
> >>> 
> >>> I'm pretty new to nHibernate, so I'm most likely doing something very 
> >>> dumb.  I am using nHibernate 3.2 GA.  I have two objects, "Widget" and 
> >>> "Designers".  A widget knows its designer, and it has only one 
> >>> designer.  A designer has many widgets, and it know of all of them. 
> >>> Thus, these entities: 
> >>> 
> >>> public class WidgetEntity 
> >>> { 
> >>>   public virtual Guid Id { get; set; } 
> >>>   public virtual DesignerEntity Designer { get; set; } 
> >>> } 
> >>> 
> >>> public class DesignerEntity 
> >>> { 
> >>>   public virtual Guid Id { get; set; } 
> >>>   public virtual string Name { get; set; } 
> >>>   public virtual string Address { get; set; } 
> >>> 
> >>>   public virtual ICollection<WidgetEntity> Widgets { get; set; } 
> >>> } 
> >>> 
> >>> I've created the following two mappings: 
> >>> 
> >>> <hibernate-mapping xmlns='urn:nhibernate-mapping-2.2' 
> >>> assembly='ODataTest' namespace='ODataTest' > 
> >>>   <class name='WidgetEntity' table='WidgetEntity' > 
> >>>     <id name='Id' column='Id' > 
> >>>       <generator class='guid.comb' /> 
> >>>     </id> 
> >>>     <many-to-one name='Designer' class='DesignerEntity' 
> >>> column='DesignerId' foreign-key='FK_DESIGNER_WIDGETS' cascade='save- 
> >>> update' /> 
> >>>   </class> 
> >>> </hibernate-mapping> 
> >>> 
> >>> <hibernate-mapping xmlns='urn:nhibernate-mapping-2.2' 
> >>> assembly='ODataTest' namespace='ODataTest'> 
> >>>   <class name='DesignerEntity' table='DesignerEntity'> 
> >>>     <id name='Id' column='Id'> 
> >>>       <generator class='guid.comb' /> 
> >>>     </id> 
> >>>     <set lazy='true' name='Widgets' inverse='true'> 
> >>>       <key column='DesignerId' /> 
> >>>       <one-to-many class='WidgetEntity' /> 
> >>>     </set> 
> >>>   </class> 
> >>> </hibernate-mapping> 
> >>> 
> >>> Basic queries for either widgets or designers work great; no 
> >>> problems.  But I am using this in context of an OData server, and so 
> >>> when I am issue a command like 
> >>> http://[SERVER]/WidgetService/Designers(guid'[ID]')/?$expand=Widgets, 
> >>> I get an exception back.  OData is by-and-large hiding the nHibernate 
> >>> LINQ command, but inferring from stepping through the code, I think 
> >>> this is the exact command / expression being passed to 
> >>> DefaultQueryProvider.Execute: 
> >>> 
> >>> 
> >>> 
> value(NHibernate.Linq.NhQueryable`1[ODataTest.DesignerEntity]).Where(element 
>
> >>> => (element.Id == d5e3ce36-b0d0-49e7-b104-28029ff59414)).Select(p => 
> >>> new ExpandedWrapper`2() {ExpandedElement = p, Description = "Widgets", 
> >>> ProjectedProperty0 = p.Widgets}) 
> >>> 
> >>> The resulting SQL query is this: 
> >>> 
> >>> exec sp_executesql N'select designeren0_.Id as Id1_0_, widgets1_.Id as 
> >>> Id0_1_, widgets1_.DesignerId as DesignerId0_1_ from DesignerEntity 
> >>> designeren0_ inner join WidgetEntity widgets1_ on 
> >>> designeren0_.Id=widgets1_.DesignerId where designeren0_.Id=@p0',N'@p0 
> >>> uniqueidentifier',@p0='D5E3CE36-B0D0-49E7-B104-28029FF59414' 
> >>> 
> >>> I hacked out some columns for brevity sake.  My SQL server likes this 
> >>> just fine, and returns two rows.  However, when attempting to 
> >>> transform the SQL result into my returned data, I get an exception. 
> >>> What it comes down to is an InvalidCastException: "Unable to cast 
> >>> object of type 'ODataTest.WidgetEntity' to type 
> >>> 'System.Collections.Generic.ICollection`1[ODataTest.WidgetEntity]'." 
> >>> The exact location is in ResultTransformer.cs, line 25: 
> >>> 
> >>> return _itemTransformation == null ? tuple : 
> >>> _itemTransformation.DynamicInvoke(new object[] {tuple}); 
> >>> 
> >>> _itemTransformation is "{Method = 
> >>> 
> >>> 
> {System.Data.Services.Internal.ExpandedWrapper`2[ODataTest.DesignerEntity,System.Collections.Generic.IEnumerable`1[ODataTest.WidgetEntity]]
>  
>
> >>> lambda_method(System.Runtime.CompilerServices.Closure, 
> >>> System.Object[])}}".  tuple is an array of two objects.  The first is 
> >>> my DesignerEntity, complete with Widgets ICollection filled in.  The 
> >>> second is a single WidgetEntity, the values of which correlate to the 
> >>> first SQL result row. 
> >>> 
> >>> At this point, I have no idea what's going on.  :)  I am supposing 
> >>> that the problem is in my hbm files.  I have tried setting up many-to- 
> >>> one without cascade (which, I would think, doesn't matter here since 
> >>> I'm only doing a select).  I have tried setting up the one-to-many as 
> >>> a bag, and both with and without the inverse. 
> >>> 
> >>> Apologies if I'm missing some information, or this is too much 
> >>> information.  Any help would be appreciated... I've been pulling my 
> >>> hair for a couple of days on this.  :)  Thanks!! 
> > 
> > -- 
> > You received this message because you are subscribed to the Google 
> Groups 
> > "nhusers" group. 
> > To view this discussion on the web visit 
> > https://groups.google.com/d/msg/nhusers/-/_HXMaOXs88sJ. 
> > 
> > To post to this group, send email to [email protected]<javascript:>. 
>
> > To unsubscribe from this group, send email to 
> > [email protected] <javascript:>. 
> > 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 view this discussion on the web visit 
https://groups.google.com/d/msg/nhusers/-/NfOc7qfNg44J.
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