MVC 4에서 Dapper를 사용하여 저장 프로 시저

asp.net asp.net-mvc c# dapper

문제

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> Query<T> 반환하므로 IEnumerable<TBMobileDetails> AllMobileListing(): 간단하게 사용할 수 있습니다 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 with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.