mysql - 如何使用 Dapper 将 BINARY(16) 映射到 GUID?

标签 mysql mariadb dapper guid

我将数据作为 BINARY(16) 存储在数据库中,我想使用 dapper 选择数据并将其映射到模型属性,即 Guid。这样做的好方法是什么?

小巧玲珑 1.50.4

最佳答案

如果您在我们数据库中的所有 guid 都存储为 BINARY(16),我会继续创建自定义类型处理程序以自动将二进制格式转换为 GUID。像这样的东西:

class BinaryGuid {
  public Guid Guid;
  public BinaryGuid(byte[] binaryGuid) {
    <your-code-here>  
  } 
}

public class BinaryGuidHandler: SqlMapper.TypeHandler<BinaryGuid>
{
    public override Roles Parse(object value)
    {
        <your-code-here>
    }

    public override void SetValue(IDbDataParameter parameter, BinaryGuid value)
    {
        <your-code-here>
    }
}

然后你注册它以供 Dapper 使用

SqlMapper.AddTypeHandler(new BinaryGuidHandler());

你应该可以开始了:

var r = conn.Query<BinaryGuid>("SELECT MyBinaryGuid FROM MyTable")

我在这里写了一篇关于如何在 Dapper 中管理自定义类型的文章(和示例):

https://medium.com/dapper-net/custom-type-handling-4b447b97c620

关于mysql - 如何使用 Dapper 将 BINARY(16) 映射到 GUID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50533382/

相关文章:

mysql - 如何处理 csv 导入时的 'data truncated for column' 警告?

Mysql查询多重内连接和左连接

mysql - 如何执行 SQL 查询,连接另一个表的 count() 列在sequelizejs中

javascript - Sequelize 中两个表之间存在多种类型的多对多关系

mysql - 远程到IP有端口的MariaDB服务器

c# - 运行选择查询时,Dapper 以什么顺序填充类成员?

MySql 按顺序选择岛屿并删除间隙

c# - SQLite + Dapper:将值转换为枚举

c# - DapperORM中 'SELECT CAST(SCOPE_IDENTITY() as int)'的重要性

mysql - 选择速度很慢但 key 唯一,有什么办法改进吗?