Dapper のマルチマッピング: SplitOn パラメーターを理解する
Dapper のマルチマッピングを使用すると、単一のクエリから複数の型をフェッチできます。ただし、ユーザーは、splitOn パラメータを使用するときに問題が発生することがよくあります。
この例では、Customer クラスが関連付けられた ProductItem クラスがクエリされています。この問題は、列を正しいオブジェクトに分割しようとすると発生します。デフォルトでは、Dapper は分割ポイントが Id 列であると想定します。
したがって、提供されたコードが正しく機能するには、splitOn: "CustomerId,CustomerName" が必要です。これは Customer オブジェクトの開始点を指定します。
ただし、基になるテーブル内の列の順序が重要であることに注意することが重要です。列の順序が変更された場合 (たとえば、CustomerName が CustomerId の前に来る)、splitOn: "CustomerId" を使用すると、顧客名が null になります。
このようなシナリオでは、複数のカンマ区切りの分割ポイントを使用します (例: splitOn: "CustomerId,CustomerName") は、結果セットを正しく分割するために必要です。これにより、Dapper は、Customer オブジェクトが最初の列で始まり 2 番目の列で終わることを認識できるようになります。
分割ポイントの順序は、Dapper クエリ内のクラスの順序に対応していることに注意してください。 Dapper でマルチマッピングを効果的に使用するには、この動作を理解することが不可欠です。
以上がDapper の「splitOn」パラメータはマルチマッピングと列の順序をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。