DateOnly/TimeOnly support (#2051) was compiled out in 907a4d9 pending
#2071/#2072. This re-enables it with the root causes fixed, and teaches the
read paths that the date/time family has no IConvertible bridge - which box
a date or time column yields is a provider/version decision (Npgsql 10:
DateOnly/TimeOnly; SqlClient and Npgsql 9: DateTime/TimeSpan), so both
shapes must convert:
- GetFieldValue<T> is no longer demanded of a column whose reported type
needs a family conversion (a datetime column into a DateOnly member was
the #2072 breakage; SqlDecimal-style entries, where GetFieldValue from a
differently-reported column is the whole point, keep it);
- the member, scalar and Parse<T> paths all convert DateOnly/TimeOnly <->
DateTime/TimeSpan in both directions (IL for members, object-level
elsewhere), fixing reads against Npgsql 10 date/time columns (#2226);
- Query<DateOnly>/<TimeOnly> in scalar form no longer silently return
default(T) (#2227): the typeMap entries make them simple types again;
- the same-TypeCode direct-unbox shortcut is restricted to distinct codes:
TypeCode.Object matching TypeCode.Object says nothing (TimeSpan into
TimeOnly? threw), while object on either side (sql_variant columns,
dynamic members) keeps the direct unbox;
- the scalar conversion fallback keeps Convert.ChangeType's strict null
contract (TestConversionExceptionMessages pins it).
The parked DateTimeOnlyTests are re-enabled, with new tests for the #2072
shape (datetime column into DateOnly member), the #2227 scalar shape, and
date-as-DateTime regression guards; PostgresqlTests gains the Npgsql-10
interchange matrix ([FactPostgresql], so it runs where the documented
container is available).
Fixes#2072, #2226, #2227, #1728; expected to also resolve#2071.
* attempt NRT makeover
- annotate NRTs on GridReader API
- add protected access to some of the GridReader internals
- switch GridReader callbacks to be more type-independent
docs
lib updates; deal with yellow warnings and test failures (SQL server certs and cancellation surfacing differently)
fix break
simplify proposed GridReader changes to protected OnBeforeGrid and OnAfterGrid[Async]
Builds: Bump library versions (#1935)
Tests: Upgrade dependencies for Dependabot (#1936)
I'll do a pass at all of these later, but getting CVE versions out of the pipe.
Resolving 4 alerts here: https://github.com/DapperLib/Dapper/security/dependabot
merge and lib updates
allow Identity to be constructed on-the-fly inside GridReader
fix build warnings
include readme
rev minor
- enable [SkipLocalsInit] everywhere
- use NET5_0_OR_GREATER
for remoting check
# Conflicts:
# Dapper/CommandDefinition.cs
# Dapper/DefaultTypeMap.cs
# Dapper/SqlMapper.Async.cs
# Dapper/SqlMapper.IDataReader.cs
# Dapper/SqlMapper.Link.cs
# Dapper/SqlMapper.cs
# Directory.Build.props
* shipped, not unshipped
* fixup SqlBuilder; use is null / is not null
* use central package management (#1949)
* Nullable test tweaks
* Nuget: let's just remove it!
* 2 test fixes from review
* fix FindExplicitConstructor
* add GetPropertySetterOrThrow
* fix NRT on FindConstructor
* DapperRow: value is object?
* use NotNullWhen
* make constructor problem more obvious
* test fixes
---------
Co-authored-by: Nick Craver <nrcraver@gmail.com>
* context: #1716https://github.com/DapperLib/Dapper/issues/1716
- change type-map to allow nullable
- change DateTime/TimeSpan to null
- do not specify DbType for null
- semi-breaking change: swap GetDbType to SetDbType, noting that it is marked [Obsolete] and internal-use-only
- semi-breaking change: make LookupDbType return nullable (same internal-use/[Obsolete])
* add test for Npgsql 6.0.0-rc.1
* try list parameters (like arrays)
* never assign -1 (sentinel) as the .DbType
* postgres tests
* initial net5.0 tweaks; also fix current IDE warnings
* lib updates and fixes
* more cleanup
* fix snafu
* skip locals init
* disable xunit shadow copy in tests
* test records
* explore scenario that currently works re #1571