Dapper:是否可以自定义特定类型的特定字段的类型映射?

2024-03-17

假设我有这个User class:

public class User
{
    public int      ID          { get; set; }
    public string   FirstName   { get; set; }
    public string   LastName    { get; set; }
    public string   Email       { get; set; }
    public DateTime DateCreated { get; set; }
    public DateTime LastLogin   { get; set; }
}

我想将其映射到下表:

CREATE TABLE "user" (
  "ID"          int(11) NOT NULL AUTO_INCREMENT,
  "FirstName"   varchar(45) DEFAULT NULL,
  "LastName"    varchar(45) DEFAULT NULL,
  "Email"       varchar(255) NOT NULL,
  "DateCreated" int(11) NOT NULL,
  "LastLogin"   int(11) NOT NULL,
  PRIMARY KEY ("ID")
)

或者用更简单的话来说:我想将 DateTime 属性存储为数据库中的 int 字段。然而,这个类/表就是这种情况。其他类/表可能会以不同的方式映射。我正在考虑将自定义转换函数与类型或成员映射结合起来的一些事情。

是否可以使用 Dapper 来实现这一目标?如果可以,如何实现?


最重要的是,Dapper 在设计上并不支持这一点。其核心设计原则之一是表和对象之间的 1:1 映射,但列名到属性名的映射除外。

我最终采用的解决方案是将 Dapper 与 AutoMapper 结合起来,无论如何我们已经大量使用了 AutoMapper。在我们的 Dapper DAO 中,在复杂的情况下,我们使用与域对象分离的实体对象并在它们之间进行映射。因此,域和表之间的重要映射本质上变成了对象到对象映射的简单问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dapper:是否可以自定义特定类型的特定字段的类型映射? 的相关文章

随机推荐