基于存储过程的Linq函数count(*)返回null

时间:2009-10-02 18:02:08

标签: linq-to-sql

我有一个SQL Server 2008存储过程,它执行选择计数(*)... 我有一个基于该SP的名为GetCount()的LINQ函数。

当我做以下事情时: 诠释? count = datacontext.GetCount()。Single()。Column1;

count为null。 SP永远不会返回null。

为什么计数为空?

3 个答案:

答案 0 :(得分:1)

当我给计数别名时它起作用了。

答案 1 :(得分:0)

Linq-to-SQL似乎不喜欢将单个结果作为SELECT语句返回的存储过程。我遇到了同样的麻烦。

这种情况的一个解决方案是创建一个存储函数:

CREATE FUNCTION dbo.GetCountFunc()
RETURNS INT
AS BEGIN
    DECLARE @MyCount INT

    SELECT @MyCount = COUNT(*) FROM Customers

    RETURN @MyCount
END

然后将其拉入Linq-to-SQL数据上下文并引用它。在这种情况下,我回来INT没问题。

马克

答案 2 :(得分:0)

此链接帮助了我http://blogs.msdn.com/b/wriju/archive/2009/04/10/linq-to-sql-returning-scalar-value-from-stored-procedure.aspx

基本上如果你试图从存储过程返回一个int,它需要看起来像这样

CREATE PROCEDURE [dbo].[GetEmployeeCountRet]         

AS

BEGIN

  DECLARE @Ret INT

  SELECT @Ret = COUNT(*) FROM Emp

  RETURN @Ret

END
相关问题