【问题标题】:How to pass an Array of GUIDs to Dapper/MySQL as parameter?如何将 GUID 数组作为参数传递给 Dapper/MySQL?
【发布时间】:2021-08-03 16:02:09
【问题描述】:

我有一个表,ID 字段是以二进制形式存储的GUID。 现在我需要将GUIDs 的数组传递给 MySQL 以执行以下查询:

SELECT `ID` FROM `TABLE_NAME` WHERE `ID` IN (...`GUIDs in Binary Form`...);

但是,MySqlConnector 似乎不支持字节数组 (Byte[][]) 并且 Dapper 无法转换此类参数。

我正在使用自定义函数将GUID 类型转换为Byte[]。 有没有办法在 Dapper 中进行上述查询?

【问题讨论】:

  • 将您的字节数组转换为十六进制代码字符串('0' -> '30','A' -> '41' 等等,没有开始 '0x')并提供它到 MySQL。如果需要,请在查询中使用 UNHEX() 以恢复为二进制。

标签: c# mysql f# mariadb dapper


【解决方案1】:

如果您使用MySqlConnector,则可以将GuidFormat 连接字符串选项设置为Binary16LittleEndianBinary16TimeSwapBinary16,以匹配您的应用程序代码将Guid 转换为字节数组的方式。

然后您可以使用Dapper's list supportIEnumerable<Guid>Guid[] 作为参数传递:Dapper 会将其扩展为单个Guid 参数的列表,MySqlConnector 会将它们正确格式化为 MySQL 表的二进制文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-06
    • 1970-01-01
    相关资源
    最近更新 更多