2011-01-10 8 views
1

hier mein Code-nicht gespeicherte Prozedur Ausgangsgröße durch ExecuteReader bekommen

using (SqlDataReader sqlDataReader = ExecuteReader(CommandType.StoredProcedure, StoredProcedures.AuthenticateUser, sqlParameter)) 
     { 
      isAuthenticated = Convert.ToBoolean(sqlParameter[2].Value); 
      if (isAuthenticated) 
      { 
       if (sqlDataReader.Read()) 
       { 
        User = new UserEntity(); 
        DbHelper.GetEntity(sqlDataReader, User); 
       }     
      } 
     } 

ich isAuthenticated als falsch immer bekommen, weil sqlParameter[2].Value die Zeit null ist alles, aber wenn ich meine Abfrage mit ExecuteNonQuery ausführen es gibt mir den Wert aber in In diesem Fall kann ich die Entity nicht füllen.Suggest bitte.

Antwort

0

Ich glaube, dass Ausgabeparameter nicht verfügbar sind, bis Sie alle Ergebnisse aus dem DataReader gelesen haben. Versuchen Sie dies stattdessen:

using (SqlDataReader sqlDataReader = ExecuteReader(CommandType.StoredProcedure, 
     StoredProcedures.AuthenticateUser, sqlParameter)) 
{ 
    var newUser = new UserEntity(); 
    if (sqlDataReader.Read()) 
    {    
     DbHelper.GetEntity(sqlDataReader, User); 
    } 

    isAuthenticated = Convert.ToBoolean(sqlParameter[2].Value);   
    if (isAuthenticated) 
    { 
     User = newUser; 
    } 
}