以前这很好,最近该行停止了工作。此代码使用数据库上下文来运行过程并以列表格式返回它。由于某种原因,我没有看到该错误,只是看到该操作失败,因为它没有执行。
我在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)
在实体框架中的实现
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);
}
这应该返回查询中的行。
答案 0 :(得分:1)
我发现的解决方案是在Visual Studio中修改存储过程的输出。
答案 1 :(得分:0)
尝试删除列表的新实例,然后像这样
List<output> seResult = _output.searchLog(searchString);
将存储的过程更新为
@searchValue varchar(150)
AS
BEGIN
SELECT
[ColumnName1]
,[ColumnName2] ...etc...
FROM [dbo].[output]
WHERE CONTAINS (*,@searchValue)
END