2009-10-02 9 views
0

J'ai une procédure stockée SQL Server 2008 qui effectue un compte select (*) ... J'ai une fonction LINQ appelée GetCount() basée sur ce SP .Fonction Linq basée sur la procédure stockée qui compte (*) renvoie null

Lorsque je fais quelque chose comme: int? count = datacontext.GetCount(). Single(). Colonne1;

le nombre est nul. Le SP ne renvoie jamais null.

Pourquoi count est-il nul?

+0

SELECT COUNT (*) FROM clients c'est très simple et ça renvoie un nombre. Je l'ai testé. Mon LINQ est-il correct? –

Répondre

1

Cela a fonctionné quand j'ai donné un alias au compte.

+1

Pouvez-vous poster votre solution? Où avez-vous défini l'alias? –

+0

SELECT COUNT (*) en tant que client CustCount FROM. –

+0

En effet! C'est assez surprenant, je dois dire - cela ressemble presque à un bug dans la base de code Linq-to-SQL ... –

0

Il semble que Linq-to-SQL n'aime pas les processus stockés qui retournent un seul résultat en tant qu'instruction SELECT. J'ai eu le même problème que vous voyez.

Une solution pour un cas comme celui-ci serait de créer une fonction stockée à la place:

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

    SELECT @MyCount = COUNT(*) FROM Customers 

    RETURN @MyCount 
END 

puis tirez que dans votre contexte de données LINQ to SQL et le référencer. Dans ce cas, je récupère un INT sans problème.

Marc

Questions connexes