You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit f67185f
Browse filesBrowse the repository at this point in the historyBrowse files
Retrieve's rows can be passed to DequeueAs and DequeueAsMappedDictionaries without a nullable warning (#106)
Retrieve returns QueryResultQueue<object[]>, but DequeueAs<T> and DequeueAsMappedDictionaries
took QueryResult<Queue<object?[]>>. QueryResult<T> is invariant, so a nullable-enabled caller
got CS8620 on cmd.Retrieve().DequeueAsMappedDictionaries(). The rows hold object values (DBNull
for NULL, never null), so the parameters are now QueryResult<Queue<object[]>>, as is
Transformer<T>.AsDequeueingEnumerable(QueryResult<Queue<object[]>>). This is a nullable
annotation change only; there is no binary change.
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
publicList<Post>QueryResult_ODE()=>((QueryResult<Queue<object?[]>>)(object)_conn.Command(Sql).Retrieve()).DequeueAs<Post>().ToList();// The same type: Retrieve() annotates its rows object[] and DequeueAs object?[], so the cast goes through object.
/// <remarks>Declare the <see cref="RowMap{T}"/> once and pass it: a map built in the call (a <c>new RowMap<T>(...)</c> or a collection expression in the argument) is rebuilt, and its row reader compiled, on every call.</remarks>
/// <remarks>Declare the <see cref="RowMap{T}"/> once and pass it: a map built in the call (a <c>new RowMap<T>(...)</c> or a collection expression in the argument) is rebuilt, and its row reader compiled, on every call.</remarks>
0 commit comments