mysql - 如何使用 Dapper 将 BINARY(16) 映射到 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
推荐阅读
- python - 如何将内容保留在方形轮廓内,同时删除其他形状的轮廓?
- ios - 在嵌入在 NavController 中的 VC 中呈现“视图”
- ios - SwiftUI 软件键盘 + 两个 TextFields = 约束冲突
- python - Python:有没有办法直接使用 Pandas 系列对象而不使用列表
- modelica - 如何理解 Modelica 模型中的病态雅可比问题?
- r - 重新排序 mlr3 的训练模型重要性值以匹配 R 中的任务?
- c++ - 结构初始化列表为零而不是初始化为值
- sql - 使用 partition by 子句时如何排序
- java - 如何根据给定的输入数字反转字符串的每个单词?
- google-maps - 在颤动中区分谷歌地图上的用户拖动和animateCamera