Description
Delaying deserialization of view result row keys and values until explicitly requested has very little value. The deserializer is still required to deserialize the rows, it just does so onto a dynamic object such as a JToken. This is adding more heap allocations, and adding an extra step to convert that to a POCO when Value<T> or Key<T> is called later. It is also interfering with fallbacks for non-streaming deserializers, which need to deserialize the whole response in one shot.
Instead, we can use strongly-typed results of IViewRow<TKey, TValue> which allows the deserializer to create the POCO directly.
Note: This is a PoC change for consideration.