Я работаю в приложении, которое показывает местоположение посетителей в заданном радиусе.Поэтому я создал хранимую процедуру, чтобы позволить sqlserver работать: ´
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[sp_GEO_Get_Events_Map_Time](
@RADIUS INT,
@LAT VARCHAR(10),
@LONG VARCHAR(10))
AS
BEGIN
declare @GEO1 GEOGRAPHY=null
SET @geo1= geography::Point(@LAT, @LONG, 4326)
SELECT tbl_Address.ID,street,
LEFT(CONVERT(VARCHAR,
(@geo1.STDistance(geography::Point(ISNULL(LAT,0),ISNULL(LONG,0),
4326)))/1000),5)+' Km' as DISTANCE,
creator,
StartTime
FROM tbl_address join tbl_Event on tbl_address.ID = tbl_event.id
WHERE (@GEO1.STDistance(geography::Point(ISNULL(LAT,0),ISNULL(LONG,0), 4326)))/1000 < @RADIUS and StartTime > GETDATE()
END
GO
Я обновил модель и при вызове хранимой процедуры возвращает целое число со значением: -1 Здесь:
using (var cont = new LazyWebEntities())
{
var a = cont.sp_GEO_Get_Events_Map_Time(10, "48.210033", "16.363449");
Console.WriteLine(a.ToString());
Console.ReadKey();
}
в Model.Context.cs он генерирует:
public virtual int sp_GEO_Get_Events_Map_TimeNEW(Nullable<int> rADIUS, string lAT, string lONG)
{
var rADIUSParameter = rADIUS.HasValue ?
new ObjectParameter("RADIUS", rADIUS) :
new ObjectParameter("RADIUS", typeof(int));
var lATParameter = lAT != null ?
new ObjectParameter("LAT", lAT) :
new ObjectParameter("LAT", typeof(string));
var lONGParameter = lONG != null ?
new ObjectParameter("LONG", lONG) :
new ObjectParameter("LONG", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("sp_GEO_Get_Events_Map_TimeNEW", rADIUSParameter, lATParameter, lONGParameter);
}
, что действительно странно, потому что, когда я запускаю SP на SQLServer, он возвращает данные, как requesttet
Я надеюсь, что выможет помочь мнеСпасибо за ваши ответы Том