11

署名付きのストアドプロシージャがあります

PROCEDURE [dbo].[spValidateID]
    @ScanCode       VARCHAR(50),
    @Name           VARCHAR(50) = NULL OUTPUT,
    @ScanTime       DATETIME = NULL OUTPUT,
    @ValidationCode INT = 0 OUTPUT

これは、validationCodeを返し、name変数とscanTime変数も入力することになっています。呼び出し中にscanCode値を指定する必要があります。

私のC#コードでは、このようにしています。

using (var context = new DBEntities())
{
    var pScanCode = new SqlParameter("ScanCode", scanCode);
    var opName = new SqlParameter("Name", name);
    var opScanTime = new SqlParameter("ScanTime", scanTime);
    var opValidationCode = new SqlParameter("ValidationCode", validationCode);

    var test = context.ExecuteStoreQuery<int>("spValidateID @ScanCode, @Name, @ScanTime, @ValidationCode", pScanCode, opName, opScanTime, opValidationCode);
}

しかし、これを実行している間、エラーが発生します。オブジェクトタイプSystem.RuntimeTypeから既知のマネージドプロバイダーネイティブタイプへのマッピングは存在しません。

何か案が??

4

1 に答える 1

5

sqlparametersと@の出力設定がありません。コードは次のようになります。

SqlParameter pScanCode = new SqlParameter("@ScanCode", ScanCode);
SqlParameter opName = new SqlParameter("@Name", name);
opName.Direction = System.Data.ParameterDirection.Output;   //Important!
SqlParameter opScanTime = new SqlParameter("@ScanTime", scanTime);
opScanTime.Direction = System.Data.ParameterDirection.Output;   //Important!
SqlParameter opValidationCode = new SqlParameter("@ValidationCode ", validationCode);
opValidationCode.Direction = System.Data.ParameterDirection.Output;   //Important!
于 2012-10-06T15:26:18.870 に答える