Дампер пользовательский TypeHandler и нулевое значение - PullRequest
0 голосов
/ 16 ноября 2018

Я использую dapper для доступа к MySQL и MSSQL из одного и того же интерфейса.Проблема, с которой я сталкиваюсь, заключается в том, что у меня есть собственный SqlMapper.TypeHandler для Nullable.TypeHandler mapper используется для сопоставления Guid с двоичным (16) в базах данных.

Проблема заключается в вставке и обновлении.

Когда guid не равен null, он работает как в MySQL, так и в MSSQL.Но когда значение guid равно нулю, оно работает только в MySQL.Проблема в том, что я считаю, что MSSQL при вставке NULL нужен тип столбца.

Я действительно изменил некоторый код в Dapper, когда собирается вызывать пользовательский TypeHandler.Parse, и значение равно нулю, чтобы попросить обработчик подготовить DbType к DbParameter, поэтому я установил его, чтобы всегда менять тип на DbType.Binary.И это сработало!Но только для вставки, а не для обновления.

Поскольку при обновлении вызывающих вызовов он не вызывает LookupDbType для типа параметра, когда значение параметра равно нулю.И я не знаю, насколько хорош Даппер, чтобы быть уверенным, что он может внести еще некоторые изменения.

В основном при использовании пользовательского SqlMapper.TypeHandler, где T обнуляется и фактически равен нулю при вставке или обновлении базы данных, он не работает в MSSQL и выдает«Неявное преобразование из типа данных».

У кого-нибудь была такая же проблема?И решить это как-то легко?Спасибо.

...