Ich versuche CRUD Operation in MVC mit Dapper und gespeicherte Prozedur zu tun, aber ich bin nicht in der Lage, das Ergebnis von Modell zu Controller aufgrund von Konvertierungsfehler, die ich nicht lösen kann, zurückgeben. Bitte kann mir jemand helfen, was ich als Ergebnis zurückgeben soll
Das ist mein Controller
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));
}
Modell
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
}
Error:
Der Typ 'string' kann nicht implizit in 'System.Collections.Generic.IEnumerable' umgewandelt werden.
Ich weiß, es ist ein sehr häufiger Fehler und ich mache einen dummen Fehler.
Sie sollten die Dapper-Methode Query<T>
verwenden, um die Ergebnisse eines Aufrufs einer gespeicherten Prozedur abzurufen, wenn der SP eine SELECT-Anweisung verwendet, um Daten zurückzugeben.
Query<T>
gibt ein IEnumerable<T>
, sodass Sie einfach IEnumerable<TBMobileDetails> AllMobileListing():
return con.Query<TBMobileDetails>(
"Sp_MVCDapper", para, commandType: CommandType.StoredProcedure)
und für 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
Und als Anmerkung: Wenn Ihr Parameter eine Zahl ist, dann verwenden Sie keinen string
Typ. Es verursacht nur später Kopfschmerzen.