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

Reply via email to