detta händer på grund av skillnaden mellan geografidatatypen och geometridatatypen.
Bäst att förklara med ett exempel.
declare @point1 as geography
declare @point2 as geography
set @point1 = geography::STGeomFromText('POINT (7 1)', 4326)
set @point2 = geography::STGeomFromText('POINT (7 3)', 4326)
select @point1.STDistance(@point2)
declare @point3 as geometry
declare @point4 as geometry
set @point3 = geometry::STGeomFromText('POINT (7 1)', 4326)
set @point4 = geometry::STGeomFromText('POINT (7 3)', 4326)
select @point3.STDistance(@point4)
Om du kör detta direkt i SQL Server Management Studio får du 221151.479533501 i det första resultatet och 2 i det andra.
Detta beror i grunden på att enheten i geografidatatypen väljs enligt det medföljande SRID. I ditt fall är det 4326 i meter. Så du frågar efter avståndet, i meter, mellan koordinaterna (lon:7; lat:1) och (lon:7; lat:3). Den återvänder cirka 221 km.
När du använder geometritypen (andra exemplet) är det en plan projektion där avståndet fungerar som du kan förvänta dig, vilket ger 2.
När det gäller din NH Spatial-kod verkar det ok. Ange bara parametern maxDistance i meter så borde det gå bra.