Я рефакторирую какой -то код, который использовал отражение, чтобы отобразить SQLCommand для модели. Новый код использует платформу Dapper и работает совершенно нормально: < /p>
Public Shared Function GetModel(Of T As New)(cmd As SqlCommand) As T
Try
Dim params = GetParametersDictionary(cmd)
Dim result As Object
Using conn As New SqlConnection(ConnectionString)
result = conn.Query(Of T)(cmd.CommandText, params).FirstOrDefault()
End Using
Return result
Catch ex As Exception
ErrorsLogger.LogException(ex)
Throw
End Try
End Function
< /code>
Однако в старом коде у меня был крайний случай для свойств строк и значений dbnull. Что-то вроде: < /p>
If IsTypeOfString(prop) AndAlso IsDbNull(value) Then
prop.SetValue(obj, "")
End If
< /code>
Новый код не преобразует значения dbnull (null) в пустую строку. Вместо этого он оставляет значение, просто ничего не устанавливающего, что -то, нарушая какой -то код в другом месте. Предпочтительно без отражения. < /P>
Пробое /рассмотрено /рассмотрение /ограничения: < /p>
Custom Dapper SQLMapper: не работает, когда значения являются NULL. что каждое свойство строки правильно инициализировано с помощью "".>
Подробнее здесь: https://stackoverflow.com/questions/772 ... -in-dapper