【发布时间】:2019-05-28 22:08:00
【问题描述】:
以前这很好用,最近线路停止工作。此代码使用 DB 上下文运行一个过程并以 List 格式返回它。出于某种原因,我没有看到错误,我只是看到操作失败,因为它没有执行。
我在 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);
}
这应该返回查询中的行。
【问题讨论】:
-
你的问题描述很模糊。我不知道您所说的“我看看是否失败”是什么意思。如果代码之前可以正常工作,它可能没有任何问题,因此您几乎没有给我们任何实质内容。
-
Action 返回内部错误。
-
您需要确定内部错误是什么,例如通过记录异常。
-
哦,我明白了。您没有在顶部包含方法声明,这将非常有帮助。 ExecuteFunction 返回一个整数,表示返回的行数。这个数字似乎是
0,解释了错误。之前可能是1或更多(例如,如果数据库发生更改),这就是它之前“工作”的原因,尽管我不知道它是如何返回任何行的。 -
你能发布
searchLog的签名定义吗?
标签: c# sql sql-server asp.net-mvc