如何用dapper将二进制(16)Map到guid?

jhkqcmku  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(242)

我把数据存储在数据库里 BINARY(16) 我想使用dapper选择数据,并将其Map到 Guid . 做这件事的好方法是什么?
轻巧1.50.4

t8e9dugd

t8e9dugd1#

如果我们数据库中的所有guid都存储为二进制(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

相关问题