繁体   English   中英

在MVC 4中使用Dapper的存储过程

[英]Stored Procedure using Dapper in MVC 4

我正在尝试使用Dapper和存储过程在MVC中执行CRUD操作,但是由于无法解决的转换错误,我无法将结果从模型返回到控制器。 请任何人能帮助我返回我的结果吗

这是我的控制器

 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));
 }

模型

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
}

错误:

无法将类型'string'隐式转换为'System.Collections.Generic.IEnumerable'

我知道这是一个非常常见的错误,我正在做一些愚蠢的错误。

如果SP使用select语句返回数据,则应使用Dapper的Query<T>扩展方法来获取存储过程调用的结果。

Query<T>返回一个IEnumerable<T> ,因此您可以简单地将其用于IEnumerable<TBMobileDetails> AllMobileListing():

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

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

另外请注意:如果您的参数是数字,请不要使用string类型。 只会在以后引起头痛。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM