我有一个SQL Server 2008存储过程,它执行选择计数(*)... 我有一个基于该SP的名为GetCount()的LINQ函数。
当我做以下事情时: 诠释? count = datacontext.GetCount()。Single()。Column1;
count为null。 SP永远不会返回null。
为什么计数为空?
答案 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)
基本上如果你试图从存储过程返回一个int,它需要看起来像这样
CREATE PROCEDURE [dbo].[GetEmployeeCountRet]
AS
BEGIN
DECLARE @Ret INT
SELECT @Ret = COUNT(*) FROM Emp
RETURN @Ret
END