Dapper複数の結果単一のクエリから

c# dapper sql-server

質問

こんにちは、私はDapperと握手しようとしています。

私の状況は、私は2つの別々の文字列にクエリから2つの値を取得したいです。私は正しい方法でこれについて行っているかどうかはわかりませんが、これは私がやっていることです:

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'。 2番目の文字列を読み込もうとしています。最初の値が正しく取得され、両方のフィールドが読み込み側にあります。私は本当にAPIを悪用しています。

私はここで間違って何をしていますか?私はグーグルではありますが、具体的な例を見つけることができます。

受け入れられた回答

QueryMultiple誤って使用していQueryMultiple 。これは、 複数の結果セットを戻す複合SQLステートメントに定義されています。何かのようなもの:

SELECT Foo FROM MyTable;
SELECT Bar FROM MyOtherTable;

一方、 単一の結果セットから2つの異なるを取得しようとしているので、通常のQueryメソッドを使用するだけです。

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

Queryは、一般にクエリが複数の行を返すことができるため、列挙型を返します。しかし、1つの行だけが必要なように見えるので、末尾に.Singleを呼び出してその行を取得します。そこから、戻り値の型はdynamicため、 SELECT文の列で暗黙的に指定されているtypetypeおよびname参照できます。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ