Right, which is exactly what I'm working on right now... What I'm proposed is a fix for the issues relating to the LINQ provider custom types. What do you all think of the solution?
On Thu, Aug 19, 2010 at 11:41 AM, Fabio Maulo <[email protected]> wrote: > I think that first we have to fix issues related to Linq-Provider and > custom-types then we have to add some linq-extensions inside > NHibernate-Spatial (as it has HQL extensions). > > > On Thu, Aug 19, 2010 at 11:02 AM, David Pfeffer <[email protected]>wrote: > >> An example from NH Spatial -- >> >> I have a type... >> >> public class Breadcrumb >> { >> public virtual int Id { get; set; } >> public virtual IGeometry Position { get; set; } >> public virtual string Description { get; set; } >> } >> >> ...and in my code I do the following... >> >> IGeometry center; >> // code here to set the center to a useful point >> var breadcrumbsWithinDistance = session.Query<Breadcrumb>().Where(x => >> x.Position.Distance(center) < 500); >> >> Now, how would the LINQ engine know the mapping of *center*? Since it >> isn't a property of a mapped class there's nothing already specified here >> for what user type to use. >> >> I propose that line could be replaced as... >> >> var breadcrumbsWithinDistance = session.Query<Breadcrumb>().Where(x => >> x.Position.Distance(center.AsUserType(new >> NHibernate.Type.CustomType(typeof(NHibernate.Spatial.Type.MsSql2008GeographyType), >> null) >> )) < 500); >> >> (or whatever other user type is appropriate for that database engine) >> >> What do you think? >> >> >> On Mon, Aug 16, 2010 at 5:16 PM, Fabio Maulo <[email protected]>wrote: >> >>> >>> El 16/08/2010, a las 12:14, David Pfeffer <[email protected]> >>> escribió: >>> >>> I would attempt to write a fix, but this isn't just a bug. There's a >>> design issue to be resolved here as to how to go about implementing this. >>> >>> >>> I'm not so sure about " a design issue"... >>> >>> >>> One idea I have is to create an extension method, WithUserType(this >>> object obj, IType type) that will be used to inform the LINQ provider as to >>> the type (UserType, etc.). >>> >>> >>> Try to write an example where the Type can't be inferred. >>> Thanks. >>> >>> >>> If this sounds like a good idea, would anyone be able to provide a few >>> pointers as to where to look to hook this in? I will take a look and see if >>> I can patch. >>> >>> Thanks. >>> >>> On Mon, Aug 16, 2010 at 10:53 AM, Fabio Maulo < <[email protected]> >>> [email protected]> wrote: >>> >>>> Known issue >>>> <http://216.121.112.228/browse/NH/component/10120> >>>> http://216.121.112.228/browse/NH/component/10120 >>>> >>>> >>>> On Fri, Aug 13, 2010 at 2:54 PM, David Pfeffer < <[email protected]> >>>> [email protected]> wrote: >>>> >>>>> Hello all, >>>>> >>>>> So I'm having a bit of difficulty trying to build a LINQ to NH Spatial >>>>> provider. Specifically, I have not found a way to specify the user type >>>>> for >>>>> IGeometry types. So, even though I have the backend LINQ parser code >>>>> plugged >>>>> in, queries fail due to "No persister for: GeoAPI.Geometries.IGeometry." >>>>> >>>>> In Criteria and HQL specifying the user type is easy. How do I specify >>>>> the user type for a LINQ query so that my backend code is invoked? >>>>> >>>>> Thanks! >>>>> >>>> >>>> >>>> >>>> -- >>>> Fabio Maulo >>>> >>>> >>> >> > > > -- > Fabio Maulo > >
