2017-01-17 64 views
1

我是Dapper.net的新手,我試圖使用Dapper.Net執行存儲過程。將dapper.net的存儲過程輸出轉換爲列表

我有一個模型類StoreProcedureResult,與存儲過程的輸出有關。

public StoredProcedureResult 
{ 
    public string Name { get; set; } 
    public string Address { get; set; } 
    public string PhoneNumber { get; set; } 
} 

conn.Query(SP_name, Param(s), Type). 

該模型的輸出是動態檢索的。

執行後,我得到以下

{{Dapper,Name='Pradeep',Address='UK',PhoneNumber='+4478923984'}} 
{{Dapper,Name='Jack',Address='USA',PhoneNumber='+447242344234}} 
{{Dapper,Name='Ram',Address='UK',PhoneNumber='+447892423484'}} 

我需要的動態輸出轉換成List<StoredProcedureResult>結構。

幾個搜索後,我發現這個代碼

conn.Query<*Model_name*>(SP_name, Param(s), Type). 

不幸的是這返回的行權數量,但該行是空的。如何將輸出轉換爲List<StoredProcedureResult>

謝謝

+0

這是一個關於短小精靈的問題。刪除了不相關的標籤Sql-server和stored-procedure。 –

+0

你的程序調用中有輸出嗎?感覺問題是你沒有返回任何行,否則用輸出創建一個列表不應該是一個問題。 – Veverke

+0

我從SSMS執行SP,我從中得到了結果。當我從Dapper執行相同的SP時,我得到了上面提到的輸出({{Dapperrow ...在上面)。但是,當我嘗試添加模型而不是動態模式時,我無法在行中捕獲和賦值。我試圖將SP輸出轉換爲List 或類似的東西。 –

回答

2

您需要在調用查詢時指定數據的返回類型。你在哪裏< 型號名稱>是你放置預期返回類型的地方 - 。在您的例子你在短小精悍的內部動態dapperrow型

 // Gets results in dapper's DapperRow type. This is what you're getting now. 
     var results = _connection.Query("SP_name", commandType: CommandType.StoredProcedure); 

下面的例子顯示在返回的命名類型其結果是你真正想要的東西讓數據備份。

 //Gets results in your type. Note we tell dapper we want it turned into StoredProcedureResults. 
     List<StoredProcedureResult> castResults; 
     castResults = _connection.Query<StoredProcedureResult>("SP_name", commandType: CommandType.StoredProcedure).ToList(); 
+0

Thansk G Davison。它的工作,我能夠得到我的模型輸出定義。 –