1

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

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 而不是实体框架中的结果集的过程?

克里斯托夫

4

2 回答 2

0

我知道这是一种解决方法,但是您是否尝试过让存储过程始终返回相同的结果?

就像是:

从表 1 中选择字段 1、字段 2

您可以检查 if result.Count() == 0而不是result == null

于 2013-06-19T09:41:13.187 回答
0

我认为您应该更改您的 sp 或使用 Count 函数创建一个新的:

SELECT Count(*) FROM Table1

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

于 2013-06-19T09:42:02.277 回答