ResultTransformer
在Dapper中用于在執行SQL查詢后轉換結果集。它允許你自定義如何將查詢結果映射到你的對象模型。以下是如何運用ResultTransformer
的基本步驟:
創建自定義的IResultTransformer
實現:
IResultTransformer
接口。Transform
方法,該方法接收一個IEnumerable<object[]>
類型的結果集,并返回你想要的結果類型。在Dapper查詢中使用自定義的ResultTransformer
:
Query
或QueryMultiple
方法執行查詢時,將自定義的ResultTransformer
作為參數傳遞。下面是一個簡單的示例,展示了如何創建一個將查詢結果轉換為Person
對象的ResultTransformer
,并在Dapper查詢中使用它:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using Dapper;
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
public class PersonTransformer : IResultTransformer
{
public object Transform(object[] result)
{
if (result == null || result.Length == 0)
return null;
return new Person
{
Id = (int)result[0],
Name = (string)result[1],
Age = (int)result[2]
};
}
}
public class Program
{
public static void Main()
{
string connectionString = "your_connection_string_here";
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
var personTransformer = new PersonTransformer();
var people = connection.Query<Person>("SELECT Id, Name, Age FROM People").As<Person>(personTransformer);
foreach (var person in people)
{
Console.WriteLine($"Id: {person.Id}, Name: {person.Name}, Age: {person.Age}");
}
}
}
}
在這個示例中,我們定義了一個Person
類來表示人員信息,并創建了一個PersonTransformer
類來實現IResultTransformer
接口。在Transform
方法中,我們將結果集轉換為Person
對象。然后,在Main
方法中,我們使用Query
方法執行查詢,并通過As<Person>(personTransformer)
將結果轉換為Person
對象集合。