Description
It's time for a major release and we've just been busy with other libraries. In context though, Dapper is far less work to get there. netstandard
is already supported and we don't have a long list of desired (breaking) changes to the APIs. Starting a list here to track:
API changes (breaking):
- Optional
CancellationToken
params on all Async methods (related: Async versions of QueryFirst/Single/FirstorDefault/SingleOrDefault with CommandDefinition are missing #484) - Dapper.Contrib
Insert<T>
andInsert<T, TKey>
changes forISqlAdapter
(discussion in Changed Insert methods and interface to return id as long. #640, related: #559, #587) - Dapper.Contrib - Allow custom
ISqlAdapter
(#497) (note: this locks us down for any future interface additions) -
SqlBuilder
needs a lot of tests and love (SqlBuilder OR clause #573, OrWhere() causing unexpected behavior in Where() #647) - Overload reduction via
CommandFlags
(related: Dapper doesn't use prepared statements #474)
Package Changes (breaking):
- Re-title to "Dapper" & rename Repo (Isn't is possible to unify the project/package/etc. names? #683)
- Strong-Name for
Dapper
(deprecatingDapper.StrongName
) - Strong-Name for
Dapper.Contrib
(Dapper.Contrib is not storng named #430, Dapper.Contrib strong name nuget package #685)
Missing APIs (non-breaking):
-
QueryAsync<T>
and related have a few missing from the single/first additions - Dapper.Rainbow
netstandard
support (Is there a Dapper.Rainbow release for .NET Core? #676)
PRs to examine:
- Allow custom TypeHandlers for standard types #471 - Allow custom TypeHandlers for standard types (and
.SetValue()
) (related: TypeHandler<> can't override default typeMap for base types #206, Custom type handlers for enums are ignored #259, Dapper custom TypeHandler SetValue not being called? #303, Mapping of TimeSpan to DbType.Time is too restrictive #319, Use TypeHandler for all types #433, DateTime columns from database have Kind property Unspecified. #571, SetValue is not invoked in a Dapper custom TypeHandler #607) - Custom type handlers for enums are ignored #458 - Custom type handlers for enums are ignored
- Fixed #497 by exposing SqlMapperExtensions.AdapterDictionary as public. #512 - Fixed #497 by exposing SqlMapperExtensions.AdapterDictionary as public
- Temporary fix for #555 #558 - Temporary fix (really want to fix the actual issue: Dapper cancelling only ExecuteReaderAsync not Reader.ReadAsync with MultiMap #555)
- Allow multi-map async queries to be unbuffered #597 - Allow multi-map async queries to be unbuffered (related: Unbuffered QueryAsnyc multi-mapping throws an InvalidOperationException #596)
- Dapper.Contrib - Support for composite keys in Get method #636 - Dapper.Contrib - Support for composite keys in
Get
method
Cleanup
- Documentation cleanup everywhere
- Moving to VS 2017 RC and new
.csproj
system (off Preview 2project.json
tooling) - Organize folders (after PRs!):
src
,tests
,docs
, etc. (and the same in the solution) - Release notes/documentation: moving into
/docs
(GitHub feature post here, note: this allows PRs to update docs easily too) - Global: Interpolated String usage (added firebird support #651)
- Firebird Async support (added firebird support #651 addition)
- Passing parameters object with static property causes dapper to fail with cryptic exception. #621 - Static property issues on params
- SimpleMemberMap became internal between 1.42 and 1.50.2 #613 - SimpleMemberMap became internal between 1.42 and 1.50.2
- Documentation: Add example for literal replacement to Readme.md #551 - Add example for literal replacement to Readme.md
- Documentation for Dapper.SqlBuilder #480 - Documentation for SqlBuilder
- clarification on "Limitations and caveats" #451 - Clarify memory documentation
- Audit where DbCommand.Cancel() is called #417 - Audit where
DbCommand.Cancel()
is called
Discussion - Should we add a [Column]
or [Table]
attributes and/or mapping methods?
Discussion in #722, please chime in!
Discussion - Should we add a DynamicParameters.Add()
overload in for DB params?
See #659 for details, specifically:
DynamicParameters.Add(string name, DbType type, ...)
...okay that took a while, and it's a lot of info but I'm trying to relate all the issues I see with a common solution path. What did I forget? What's wrong? Thoughts on discussion items above (or pretty much anything of course)?
There will also be some background work I'll take on here. Like being able to more readily test Dapper & Dapper.Contrib against all providers. Luckily Docker has matured enough that having a rich test bed against most providers is finally a reality. I'm working with others in the container and cloud space to make this an option for all, but that's not a blocker by any means.
I haven't even shown this to @mgravell yet. So hopefully he doesn't kinda sorta give me a mild case of death at the next meetup. Due to how # links work...this is the best way to share it for review as well, so here it is.