Как вернуть результаты хранимой процедуры в виде списка? - PullRequest
0 голосов
/ 29 мая 2019

Раньше это работало хорошо, а недавно линия перестала работать. Этот код использует контекст БД для запуска процедуры и возврата ее в формате списка. По какой-то причине я не вижу ошибки, просто вижу, что действие не выполнено, потому что оно не выполняется.

Я запустил хранимую процедуру в SQL Server и вижу желаемые результаты, но не вижу, что это происходит на прикладном уровне.

[Http.Route("postsearch")]
public async Task<IHttpActionResult> PostSearch(SearchInputDTO srequest)
{
   var searchString = srequest.SearchValue.ToString();            
   List<output> seResult = new List<output>(_output.searchLog(searchString)); /*This line stopped working*/
   return Ok(seResult);
}

Хранимая процедура:

SET FMTONLY OFF
GO
SET NOCOUNT ON
GO

ALTER PROCEDURE [dbo].[searchLog]
    @searchValue VARCHAR(150)
AS
    SELECT *  
    FROM [dbo].[output]
    WHERE CONTAINS (*, @searchValue)

Реализация в Entity Framework

public virtual int searchLog(string searchValue)
{
    var searchValueParameter = searchValue != null ?
            new ObjectParameter("searchValue", searchValue) :
            new ObjectParameter("searchValue", typeof(string));

    return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction("searchLog", searchValueParameter);
}

Это должно вернуть строки из запроса.

Ответы [ 2 ]

1 голос
/ 29 мая 2019

Решение, которое я нашел, состояло в том, чтобы изменить вывод хранимой процедуры в Visual Studio.

0 голосов
/ 29 мая 2019

Попробуйте удалить новый экземпляр списка и просто сделайте так

List<output> seResult = _output.searchLog(searchString);

Обновить сохраненный процесс до

@searchValue varchar(150)

AS

BEGIN

SELECT
  [ColumnName1]
  ,[ColumnName2] ...etc...
FROM [dbo].[output]
WHERE CONTAINS (*,@searchValue) 

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