これをデバッグするのを手伝っていただければ幸いです。以下に定義されているストアド プロシージャがあります。
ALTER PROCEDURE [dbo].[usp_ProcessBoxNumberPaymentInfo_Test]
-- Add the parameters for the stored procedure here
@boxNumber int,
@ProcessDate DateTime,
@BoxType Varchar(50),
@PaymentProcessDate DateTime,
@Identity int OUTPUT
BEGIN
Declare @NewID as int
-- INSERT CODE GOES HERE
Set @NewID = SCOPE_IDENTITY()
-- ANOTHER INSERT CODE GOES HERE
SELECT @Identity = SCOPE_IDENTITY()
END
コード側では、DataContext クラスに次のメソッドを用意して、storedproc を実行し、指定された有効値を渡します。
[global::System.Data.Linq.Mapping.FunctionAttribute(Name = "dbo.usp_ProcessBoxNumberPaymentInfo_Test")]
public int GetValidPaymentBoxNumberLogID_Test(
[global::System.Data.Linq.Mapping.ParameterAttribute(Name = "boxNumber", DbType = "Int")] string boxNumber,
[global::System.Data.Linq.Mapping.ParameterAttribute(Name = "ProcessDate", DbType = "DateTime")] DateTime ProcessDate,
[global::System.Data.Linq.Mapping.ParameterAttribute(Name = "BoxType", DbType = "VarChar(50)")] string BoxType,
[global::System.Data.Linq.Mapping.ParameterAttribute(Name = "PaymentProcessDate", DbType = "DateTime")] DateTime PaymentProcessDate,
[global::System.Data.Linq.Mapping.ParameterAttribute(Name = "Identity", DbType = "Int")] ref System.Nullable<int> identity)
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), boxNumber, ProcessDate, BoxType, PaymentProcessDate, identity);
identity = ((System.Nullable<int>)(result.GetParameterValue(4)));
return ((int)(result.ReturnValue));
}
私が抱えている問題は、コードを実行すると、次の例外が発生することです
指定されたキャストは有効ではありません
このエラーは改行時にスローされます((int)(result.ReturnValue)); どのタイプがどこに欠けているのか完全にはわかりません。本当に、これを理解する助けがあれば大歓迎です。前もって感謝します。