1

ストアド プロシージャを呼び出して、出力パラメーターを宣言しています。

CREATE PROCEDURE dbo.usp_getIsReadyForProcess
@VideoId INT ,
@val INT OUTPUT
AS
BEGIN
BEGIN TRY
    BEGIN TRANSACTION
-- LOCK ROW UNTIL END OF TRANSACTION
        SELECT * FROM dbo.ProcessStatus WITH (ROWLOCK, HOLDLOCK) WHERE VideoId = @VideoId

そして、トランザクション全体で値を設定します

  --If there is no row count
IF @@ROWCOUNT = 0
BEGIN
    SET @val = 0
END

-- If video is already in process
ELSE IF @statusCode > 1
BEGIN
    SET @val = 0
END

...... more if blocks

          -- RELEASE LOCK
    COMMIT TRANSACTION
END TRY   

出力パラメーターを取得するための c# コードは次のとおりです。

        using (var db = EntityFactory.GetInstance())
        {
            ObjectParameter objParam = new ObjectParameter("val", typeof(int));
            db.usp_getIsReadyForProcess(videoId, objParam);

            return (int)objParam.Value == 1;
        }

...しかし、何をしてもobjParam.Valueはnullです。

そこで、もう少し深く掘り下げて、既に処理された例外を明らかにします。

メッセージ: メソッドは、Type.IsGenericParameter が true である Type でのみ呼び出すことができます。

私は何を間違っていますか?type(bool, int32, string) を試しました..何も機能しません

4

1 に答える 1