マルチマッピングは、単一のクエリから複数のオブジェクト タイプを返すことができる Dapper の機能です。これを使用するには、対応するオブジェクトにデータを割り当てるマッピング関数を提供します。
この例では、クエリから ProductItems と Customers をマッピングしようとしています。
var sql = @"select * from Product p inner join Customer c on p.CustomerId = c.CustomerId order by p.ProductName"; var data = con.Query<ProductItem, Customer, ProductItem>( sql, (productItem, customer) => { productItem.Customer = customer; return productItem; }, splitOn: "CustomerId,CustomerName" );
ただしすべての顧客プロパティを返す際に問題が発生しています。これは、splitOn パラメータが 2 つのオブジェクトを区切る列を示しているためです。 CustomerName を指定しない場合、Dapper はそれが結果セットの最後にあるとみなして null を割り当てます。
これを解決するには、CustomerId が SplitOn で最初に指定され、CustomerName が 2 番目に指定されていることを確認します。これにより、結果セットが正しく分割されます。ただし、テーブル内の列の順序が変更されると、顧客名が null になる可能性があります。
注: 結果セットに複数の分割ポイントがある場合は、それらをカンマ区切り形式でリストします。 。 Dapper は、これらのポイントに基づいて結果セットを複数のオブジェクトに分割します。
以上がDapper のマルチマッピングを正しく使用してすべての顧客プロパティを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。