【发布时间】:2019-02-27 09:06:59
【问题描述】:
我正在一个应用程序中工作,该应用程序显示给定半径内的访问者位置。 所以我做了一个存储过程让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);
}
真的很奇怪,因为当我在 SQLServer 上运行 SP 时,它会返回 requestet 之类的数据
我希望你能帮助我。 谢谢您的回答 汤姆
【问题讨论】:
标签: asp.net entity-framework model-view-controller