【发布时间】:2018-11-05 02:24:16
【问题描述】:
我将数据作为BINARY(16) 存储在数据库中,我想使用dapper 选择数据并将其映射到Guid 的模型属性。这样做的好方法是什么?
小巧玲珑 1.50.4
【问题讨论】:
-
读完之后,我开始认为存储为字符是一个更好的解决方案,尽管这会浪费空间
我将数据作为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
【讨论】: