执行使用entity-framework返回0的存储过程

时间:2013-06-19 09:36:17

标签: entity-framework c#-4.0 stored-procedures

我的数据库中有一个存储过程,如下所示:

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 克里斯托弗

2 个答案:

答案 0 :(得分:0)

我认为这是一种解决方法,但您是否尝试过使存储过程始终返回相同的内容?

类似的东西:

SELECT Field1,Field2 FROM Table1

您只需检查 result.Count()== 0 ,而不是结果== null

答案 1 :(得分:0)

我认为你应该改变你的sp或用Count函数创建一个新的:

SELECT Count(*) FROM Table1

这样你的结果总是一个数字(0或更大)。