2012-07-17 5 views
9

にオブジェクト型System.RuntimeTypeから存在している私は署名でストアドプロシージャを持っているマッピングが知られている管理プロバイダネイティブ型

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

これはvalidationCodeを返しても、名前と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から存在しないエラー を取得メートル。

任意のアイデア??

+0

ExecuteStoreQueryは定義を含まないためエラーを表示します。 –

答えて

4

sqlパラメータと@の出力設定がありません。あなたのコードは次のようになります:

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! 
関連する問題