Asp.net MVC EF SQL Server возвращает int -1, а не Objectresult радиус поиска - PullRequest
0 голосов
/ 23 сентября 2018

Я работаю в приложении, которое показывает местоположение посетителей в заданном радиусе.Поэтому я создал хранимую процедуру, чтобы позволить 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

Я надеюсь, что выможет помочь мнеСпасибо за ваши ответы Том

1 Ответ

0 голосов
/ 25 сентября 2018

Hy, ребята.Вот ответ на мой собственный вопрос.Я пробовал много разных способов.Битт ничего не работал.Поэтому у моего друга возникла идея: я сделал запрос без географического типа, сохранил его в БД и обновил edmx.Затем я изменил сохраненный Procedere (посмотрите на картинки).Теперь ЭТО работало.Если у кого-то есть такая же проблема, оставьте комментарий.Я дам вам дополнительную информацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...