我的数据库中有一个存储过程,如下所示:
IF EXISTS (SELECT * FROM Table1)
BEGIN
-- select statement
END
我正在使用此过程来检查table1中是否有任何数据。 Table1用作数据库端的队列。
在我的C#应用程序中,我使用实体框架来执行此存储过程。方法如下所示:
using (DatabaseEntities db = new DatabaseEntities())
{
var result = db.ALL_GET_JOBS();
if (result == null)
{
Console.WriteLine("No new jobs");
}
else
{
Console.WriteLine(string.Format("received {0} new jobs", result.Count()));
}
}
当我执行到过程时,我得到一个异常,告诉我结果中不存在我定义的一个列。是的,因为该过程返回0.在我到达if语句之前抛出异常。
我已经尝试将.DefaultIfEmpty(null)或.FirstOrDefault()添加到过程的调用中,但据我所知,在评估结果时会发生错误。
您是否有人知道如何处理在实体框架中返回0而不是结果集的过程?
BG 克里斯托弗
答案 0 :(得分:0)
我认为这是一种解决方法,但您是否尝试过使存储过程始终返回相同的内容?
类似的东西:
SELECT Field1,Field2 FROM Table1
您只需检查 result.Count()== 0 ,而不是结果== null 。
答案 1 :(得分:0)
我认为你应该改变你的sp或用Count函数创建一个新的:
SELECT Count(*) FROM Table1
这样你的结果总是一个数字(0或更大)。