Функция Linq на основе хранимой процедуры, которая считает (*) возвращает ноль - PullRequest
0 голосов
/ 02 октября 2009

У меня есть хранимая процедура SQL Server 2008, которая выполняет выборку (*) ... У меня есть функция LINQ под названием GetCount () на основе этого SP.

Когда я делаю что-то вроде: Int? count = datacontext.GetCount (). Single (). Column1;

Счетчик равен нулю. SP никогда не возвращает ноль.

Почему считается ноль?

Ответы [ 3 ]

1 голос
/ 02 октября 2009

Это сработало, когда я дал псевдоним графу.

0 голосов
/ 06 марта 2011

Эта ссылка помогла мне 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
0 голосов
/ 02 октября 2009

Похоже, что 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 без проблем.

Марк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...