none
LINQ to SQL 關於SP預存程序的疑問 RRS feed

  • 問題

  • 小弟使用asp.net 3.5, linq to sql, sql server 2008

    我的sp長這樣:簡單的說,就是INSERT一行之後,取出該table的最新流水號 IDENT_CURRENT('SingleSignOn')

    ALTER PROCEDURE [dbo].[dsp_AddSignOnInformation]
    @UserID            VARCHAR(30),
    @UserIP            VARCHAR(50),
    @UserBrowser    VARCHAR(50),
    @UserSession    VARBINARY(300)
    AS
        SET NOCOUNT ON;

        INSERT INTO [SystemToolDB].[dbo].[SingleSignOn]
            ([UserID] ,[UserIP] ,[UserBrowser] ,[UserSession])
        VALUES
            (@UserID ,@UserIP ,@UserBrowser ,@UserSession)
       
        DECLARE @Result INT
        IF @@ROWCOUNT = 1
            SELECT @Result = IDENT_CURRENT('SingleSignOn')
        ELSE
            SELECT @Result = @@ROWCOUNT
        SELECT 1, @Result;

     

    在程式碼自動產生的class dsp_AddSignOnInformation結果 裡面,有兩個member:
    private int _Column1;
    private System.Nullable<int> _Column2;

    想必_Column1取出來的值一定是1。 _Column2就是最新的流水號,而他有可能是NULL,很合理,fine。

    我也用Management Studio執行過,確實是 1, (流水號) 這樣的輸出

    可是在asp.net執行
    var result = SystemToolDB.dsp_AddSignOnInformation(userID, userIP, userBrowser, BinarySerializer.StructToBytes(Manager)).Single();

    result.Column1卻每次都是0

    result.Column2每次都是null

    我實在大惑不解,不知道有沒有人可以解答 QQ

    2010年5月19日 上午 10:07

解答

所有回覆