Procédure stockée utilisant Dapper dans MVC 4

asp.net asp.net-mvc c# dapper

Question

J'essaie de faire une opération CRUD dans MVC en utilisant Dapper et la procédure stockée mais je ne suis pas en mesure de retourner le résultat du modèle au contrôleur en raison d'une erreur de conversion que je ne peux pas résoudre. S'il vous plaît quelqu'un peut-il aider ce que je devrais retourner comme résultat

Ceci est mon contrôleur

 public ActionResult AllMobileList()
 {
     MobileMain MM = new MobileMain();
     return View(MM.AllMobileListing().ToList());
 }

 [HttpGet]
 public ActionResult Edit(string MobileID)   
 {
     MobileMain MM = new MobileMain();
     return View(MM.GetMobileList(MobileID));
 }

Modèle

public IEnumerable<TBMobileDetails> AllMobileListing()
{
    var para = new DynamicParameters();
    para.Add("@Type", 1);
    var result= con.Execute("Sp_MVCDapper", para, commandType: CommandType.StoredProcedure).ToString();

    return result;  // Error happens here
}

public TBMobileDetails GetMobileList(string MobileId)
{
    var para = new DynamicParameters();
    para.Add("@Type", 2);
    para.Add("@MobileId",Convert.ToInt32(MobileId));
    var result = con.Execute("Sp_MVCDapper", para, commandType: CommandType.StoredProcedure).ToString();

    return result;  // Error happens here
}

Erreur:

Impossible de convertir implicitement le type 'chaîne' en 'System.Collections.Generic.IEnumerable'

Je sais que c'est une erreur très courante et je fais une erreur stupide.

Réponse acceptée

Vous devez utiliser la méthode d'extension Query<T> Dapper pour obtenir les résultats d'un appel de procédure stockée - si le SP utilise une instruction select pour renvoyer des données.

Query<T> renvoie un IEnumerable<T> , vous pouvez donc simplement utiliser pour IEnumerable<TBMobileDetails> AllMobileListing():

return con.Query<TBMobileDetails>(
    "Sp_MVCDapper", para, commandType: CommandType.StoredProcedure)

et pour TBMobileDetails GetMobileList(string MobileId)

var list = con.Query<TBMobileDetails >(
    "Sp_MVCDapper", para, commandType: CommandType.StoredProcedure);

return list.Single(); // assuming that the SP only returns a single item

Et comme remarque: si votre paramètre est un nombre, n'utilisez pas de type de string . Cela ne cause que des maux de tête plus tard.



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