Lorsque j'appelle une procédure stockée T-SQL avec Dapper, dois-je utiliser '@'?

c# dapper stored-procedures tsql

Question

Je veux appeler une procédure stockée avec Dapper et tout le code que j'ai vu jusqu'à présent le fait en spécifiant les paramètres de la procédure stockée avec le caractère @. Cela signifie que je ne peux pas simplement définir une classe de modèle et la passer dans la méthode de requête ou d'exécution de Dapper en traduisant à nouveau l'instance de modèle, ce qui semble être une perte de temps et de mémoire. Est-ce ce que j'ai vraiment besoin de faire?

Par exemple, le code ci-dessous accepte une instance de modèle. Le modèle a toutes les propriétés de la table sp_GetUser. Je m'attendrais à ce que Dapper transmette ces propriétés de modèle aux paramètres de la procédure stockée lors de l'appel. Est-ce le cas ou dois-je vraiment définir l'objet passé dans le paramètre 'param'?

    public IList<User> GetUsers(UserSP user)
    {
        using (var cn = new SqlConnection(ConnectionString))
        {
            var users = cn.Query<User>("sp_GetUsers",
                    param: new
                    {
                        @Id = user.Id,
                        @NAme = user.Name,
                        @Age = user.Age
                    },
                    commandType: CommandType.StoredProcedure).ToList();
            return users;
        }
    }

Réponse populaire

Essayez quelque chose comme ça

la classe

 public class ReportIndex
    {
        public int SlideNumber { get; set; }
        public string ChartName { get; set; }
        public string SheetName { get; set; }
    }

remplissez la classe avec dapper

public List<ReportIndex> GetReportIndex(int reportId)
    {
        List<ReportIndex> reportIndex = null;

        using (var conn = new SqlConnection(connString))
        {
            conn.Open();

            var p = new DynamicParameters();
            p.Add("@ReportId", reportId);

            reportIndex = conn.Query<ReportIndex>("sp_ReportGetReportIndex",
                                        p,
                                        commandType: CommandType.StoredProcedure).ToList();
        }

        return reportIndex;
    }


Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow