Comment obtenir une sortie de la valeur de paramètre de la méthode ExecuteNonQuery dans les entreprises de la bibliothèque (c#)?

ma procédure stockée est :

create Procedure spSetUser
(
    @Name NVarchar(50),
    @OrganicTitle NVarchar(30),
    @UserName NVarchar(20),
    @Password NVarchar(16),
    @Result Int Output
)
As
Begin
    Set @Result = -1    
    If Not Exists(Select UserId From dbo.Users Where UserName=@UserName)
    Begin
        Insert Into dbo.Users (Name,OrganicTitle,UserName,[Password]) 
        Values(@Name,@OrganicTitle,@UserName,@Password) 
        Set @Result = SCOPE_IDENTITY()
    End
    Return
End
Go

et ma classe (dans microsoft enterprise library):

[DataObjectMethod(DataObjectMethodType.Insert)]
public Int32 SetUser(UserFieldSet Data)
{
    Int32 Result = 0;
    object[] values = new object[] { Data.Name, Data.OrganicTitle, Data.UserName, Data.Password, Data.UserId };
    Result = Db.ExecuteNonQuery("spSetUser", values);
    return Result;
}

Résultat est roweffected d'exécuter la procédure stockée, mais je veux obtenir la valeur de @Result (paramètre de sortie de la procédure), Comment puis-je l'obtenir ?

UserFieldClass est :

public class UserFieldSet
{
    public Int32 UserId;
    public String Name;
    public String OrganicTitle;
    public String UserName;
    public String Password;
}

Astuce : je le sais, utilisez ce code pour obtenir @Result:

public Int32 SetUser(UserFieldSet Data)
{          
    Int32 Result = 0;
    DbCommand DbCmd = Db.GetStoredProcCommand("spSetUser");
    Db.AddInParameter(DbCmd, "@Name", DbType.String, Data.Name);
    Db.AddInParameter(DbCmd, "@OrganicTitle", DbType.String, Data.OrganicTitle);
    Db.AddInParameter(DbCmd, "@UserName", DbType.String, Data.UserName);
    Db.AddInParameter(DbCmd, "@Password", DbType.String, Data.Password);
    Db.AddOutParameter(DbCmd, "@Result", DbType.Int32, Int32.MaxValue);
    Db.ExecuteNonQuery(DbCmd);
    Result = (Int32)Db.GetParameterValue(DbCmd, "@Result");
    return Result;
}

Mais je peux l'obtenir avec cette methd :

Result = Db.ExecuteNonQuery("spSetUser", values);
Avez-vous essayé de regarder values[4] après l'appel? fait-il mis à jour? bien qu': il se pourrait que lors de l'utilisation de cette signature, tous les paramètres sont ajoutés en tant qu'entrée.

OriginalL'auteur Ali Ahmadi | 2013-02-06