Dapper et mssql utilisant la procédure stockée renvoyant une erreur significative

dapper sql-server

Question

J'ai une procédure stockée insère une ligne, et certaines conditions renvoient un jeu de résultats ou un code d'erreur unique, mais lorsque j'utilise Dapper, retournez toujours la même classe de retour. donc je ne pouvais pas comprendre si le code me donnait une erreur ou un message plutôt qu'un jeu de résultats réussi.

    public static List<Result> Results(int Id)
    {
        using (IDbConnection connection = BL.DataProvider.OpenConnection())
        {
            return connection.Query<Result>("SearchResultGet", new { Id = Id }, commandType: CommandType.StoredProcedure).ToList();
        }
    }

ALTER PROCEDURE SearchResultGet
@Id int
AS
IF(id != 0)
SELECT * FROM XX WHERE Id = Id
ELSE
SELECT -1

les codes ne sont que des exemples, n'ont aucune signification.

Réponse d'expert

Il n'y a pas d'API ORM / micro-ORM qui va aimer ça; Avoir un select -1 pour un ensemble de cas est juste ... pas agréable. Options:

  • changez le sproc pour ne pas le faire - lancez simplement la select régulière qui renvoie zéro ligne
  • Ajoutez plutôt la logique à la méthode Results (ou en plus de) le sproc - c.-à-d. vérifiez si Id est à zéro dans le C #
  • utilisez un return -1 plutôt qu'un select -1 (notez toutefois que dapper ne rend pas la capture des valeurs de retour triviale)
  • utiliser une erreur SQL ( raiserror )



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi