ストアド プロシージャを呼び出して、出力パラメーターを宣言しています。
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) を試しました..何も機能しません