2012-07-17 9 views
9

ho una stored procedure con la firmaalcun mapping esiste dal tipo di oggetto System.RuntimeType ad un noto provider gestito tipo nativo

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

Questo dovrebbe restituire un validationCode e di popolare il nome e SCANTIME variabili. Ho bisogno di dargli valore scanCode durante la chiamata.

nel mio codice C# Sto facendo così.

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); 
} 

ma durante l'esecuzione di questa I m ottenendo errore alcun mapping esiste dal tipo di oggetto System.RuntimeType ad un noto tipo nativo provider gestito.

qualche idea ??

+0

ExecuteStoreQuery mostra l'errore in quanto non contiene la definizione. –

risposta

4

Mancano le impostazioni di uscita per sqlparameters e @. Il tuo codice dovrebbe apparire in questo modo:

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! 
Problemi correlati