Я использую 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 и выдает«Неявное преобразование из типа данных».
У кого-нибудь была такая же проблема?И решить это как-то легко?Спасибо.