映射多个列以在 Dapper 中键入

本文关键字:Dapper 映射 | 更新日期: 2023-09-27 18:34:54

我正在尝试像这样映射选择:

SELECT id, total, total_currency FROM sometable

id 是 VARCHAR,总计是数字,货币是 char(3(

像这样进入实体:

class MyEntity
{
     string Id { get; set; }
     Money total { get; set; }
}

钱当然有带有签名(decimal amount, string currencyId)的构造函数。如何在 Dapper 中实现这一目标?

映射多个列以在 Dapper 中键入

如果您有父/子实体关系,则需要使用多映射,re: Money是一个类,它是 MyEntity 的子属性:

// assumes connection has already been created
string sql = "SELECT id, total, total_currency FROM sometable";
IEnumerable<MyEntity> result = conn.Query<MyEntity, Money, MyEntity>(
    sql,
    (entity, money) => { entity.Money = money; return entity; },
    spliton: "total");

有关更详细的说明,请参阅:在 Dapper 中正确使用多重映射

如果需要 Money 类的自定义参数,则建议仅使用泛型方法并将动态结果投影到实际结果中。请参阅:使用 Dapper 调用自定义构造函数?