質問: 私はしばらくの間Dapper.netを使用してきましたが、これは.Netダイナミックタイプでうまく機能する非常に優れたORMマッパーです。 しかし、Dapperがデータベースからデータを取得すると、 `DapperRow`型として返されることに`DapperRow` 。 `System.Dynamic.ExpandoObject`ような他の型で返す方法はありますか?
回答: `DapperRow`オブジェクトは、行間で多くの状態を共有するように設計されています。たとえば、40行をフェッチする場合、列名などは**1回**だけ保存されます。 `ExpandoObject`を使用した場合、これは行ごとに構成する必要があります。したがって、舞台裏の実装の詳細として`DapperRow`を使用することは、効率的な計画です。 `dynamic` APIから返されるオブジェクトは、 `IDictionary`としてキャストすることもでき`IDictionary` 。 ただし、この辞書の使用をサポートする*他の*タイプをサポートすることはできます`ExpandoObject`はその1つです。そのため、次のように変更*でき*ます。 ``` var rows = conn.Query(...); ``` 動作します。それを*サポート*するためのコードが必要なだけで、そのコードは現在存在しません。だから「いいえ、しかしおそらく将来のビルドで」。 また、 `DapperRow`を使用する必要がないことにも注意してください...より*期待される*シナリオは、ジェネリックAPIを使用して独自の型を具体化することです。