我将数据存储在数据库中BINARY(16)
,我想使用dapper选择数据,并将其映射到Guid
的模型属性。这样做的好方法是什么?
Dapper 1.50.4
答案 0 :(得分:1)
如果我们数据库中的所有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