Linq to sql 基于不计数(*)的存储过程的Linq函数返回null

Linq to sql 基于不计数(*)的存储过程的Linq函数返回null,linq-to-sql,Linq To Sql,我有一个SQL Server 2008存储过程,它执行select计数(*)。。。 基于该SP,我有一个名为GetCount()的LINQ函数 当我做以下事情时: 智力?count=datacontext.GetCount().Single().Column1 计数为空。SP从不返回null 为什么计数为空?当我给计数指定别名时,它起作用了 看来LINQtoSQL不喜欢以SELECT语句返回单个结果的存储过程。我也遇到了和你一样的麻烦 对于这种情况,一种解决方案是创建一个存储函数: CREATE

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

当我做以下事情时: 智力?count=datacontext.GetCount().Single().Column1

计数为空。SP从不返回null


为什么计数为空?

当我给计数指定别名时,它起作用了

看来LINQtoSQL不喜欢以SELECT语句返回单个结果的存储过程。我也遇到了和你一样的麻烦

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

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

    SELECT @MyCount = COUNT(*) FROM Customers

    RETURN @MyCount
END
然后将其拉入LINQtoSQL数据上下文并引用它。在这种情况下,我得到一个INT,没问题

Marc

这个链接帮助了我

基本上,如果您试图从存储过程返回int,它需要如下所示

CREATE PROCEDURE [dbo].[GetEmployeeCountRet]         

AS

BEGIN

  DECLARE @Ret INT

  SELECT @Ret = COUNT(*) FROM Emp

  RETURN @Ret

END

选择COUNT(*)FROM customers这很简单,它返回一个数字。我已经测试过了。我的LINQ正确吗?你能发布你的解决方案吗?您在哪里定义了别名?它是SELECT COUNT(*)as CustCount FROM customers。的确!这非常令人惊讶,我必须说-听起来像是Linq到SQL代码库中的一个bug……它可能与我们在设计器中的一个bug有关,该bug在4.0中修复。