首页 > 解决方案 > 如何使用 Dapper 将 BINARY(16) 映射到 GUID?

问题描述

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

小巧玲珑 1.50.4

标签: mysqlmariadbdapperguid

解决方案


如果您在我们数据库中的所有 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


推荐阅读