Dapper多個結果來自單個查詢

c# dapper sql-server

嗨,我正在努力與Dapper握手。

我的情況是我想從查詢中將兩個值拉入兩個單獨的字符串。我不確定我是否以正確的方式解決這個問題,但這就是我正在做的事情:

string sql = @"Select type, name 
              FROM ZipData 
              WHERE Zip = @zip";

using (var multi = conn.QueryMultiple(sql, new { zip = zip }))
{
   string result = multi.Read<string>().SingleOrDefault();         
}

我得到了無法訪問已處置的對象。對象名稱:'GridReader'。當試圖讀取第二個字符串時。事情是它正確獲取第一個值,並且在我想要的讀者中有兩個字段。我確定我濫用了api。

我在這做錯了什麼?我用谷歌搜索,但可以找到一個具體的例子。

一般承認的答案

你錯誤地使用了QueryMultiple 。這是為返回多個結果集的複合SQL語句定義的。就像是:

SELECT Foo FROM MyTable;
SELECT Bar FROM MyOtherTable;

另一方面,您嘗試從單個結果集中獲取兩個不同的 ,因此您應該只使用常規的Query方法:

var result = conn.Query(sql, new { zip = zip }).Single();
var type = result.type;
var name = result.name;

Query返回一個可枚舉的(因為通常一個查詢可以返回多行)。看來你只想要一行,所以我們在最後調用.Single來獲取那一行。從那裡,返回類型是dynamic因此您可以簡單地引用SELECT語句中列所隱含的屬性: typename



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因