2017-09-05 1 views
2

J'ai écrit la méthode suivante pour appeler ma proc et placer les données retournées dans un ensemble de données.Appel d'un proc SQL avec Dapper

public class GetDataFromProc 
{ 
    string constr; 
    public DataSet CallProcToDataSet(string procName) 
    { 
     DataSet ds = new DataSet(); 

     constr = ConfigurationManager.ConnectionStrings["DataBase"].ConnectionString; 

     using (SqlConnection con = new SqlConnection(constr)) 
     { 

      using (SqlCommand cmd = new SqlCommand(procName)) 
      { 
       cmd.CommandType = CommandType.StoredProcedure; 
       cmd.Connection = con; 


       using (SqlDataAdapter sda = new SqlDataAdapter(cmd)) 
       { 
        sda.Fill(ds); 
       } 
      } 
    } 
    return ds; 
} 

Ce que je veux faire est d'utiliser le paquet Dapper NuGet. Vérification à travers les documents, je peux voir l'exemple proc ligne d'appel est la suivante:

var user = cnn.Query<User>("spGetUser", new { Id = 1 }, commandType: CommandType.StoredProcedure).SingleOrDefault(); 

Cependant, je ne suis pas sûr de ce que la meilleure façon de convertir ma méthode dans l'exemple ci-dessus serait. Est-ce que quelqu'un avec plus d'expérience de Dapper pourrait m'aider?

Répondre

1
// Declare a model, with a property/field for every column 
// that you care about from your Result 
public class YourModel { 

    public int Id {get;set;} 
    // Whatever other columns your result has... 
} 



public class GetDataFromProc 
{ 
    string constr; 
    public IEnumerable<YourModel> CallProcToDataSet(string procName) 
    { 
     constr = ConfigurationManager.ConnectionStrings["DataBase"].ConnectionString; 

     using (SqlConnection con = new SqlConnection(constr)) 
     { 
      // If you expect only one row 
      var result = cnn.Query<YourModel>(procName, new { anyParametersYouHave = theirValue }, commandType: CommandType.StoredProcedure).SingleOrDefault(); 

      // If you expect more than one row and want a collection 
      var results= cnn.Query<YourModel>(procName, new { anyParametersYouHave = theirValue }, commandType: CommandType.StoredProcedure).ToList(); 

     } 
    } 
}