Как я могу сопоставить BINARY (16) с GUID с помощью Dapper? - PullRequest
0 голосов
/ 25 мая 2018

У меня есть данные, хранящиеся в БД как BINARY(16), и я хотел бы выбрать данные с помощью dapper и сопоставить их со свойством модели, которое является Guid.Какой хороший способ сделать это?

Dapper 1.50.4

1 Ответ

0 голосов
/ 25 мая 2018

Если все ваши 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

...