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):
Package Changes (breaking):
Missing APIs (non-breaking):
PRs to examine:
Cleanup
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.
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.
netstandardis 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):
CancellationTokenparams on all Async methods (related: Async versions of QueryFirst/Single/FirstorDefault/SingleOrDefault with CommandDefinition are missing #484)Insert<T>andInsert<T, TKey>changes forISqlAdapter(discussion in Changed Insert methods and interface to return id as long. #640, related: #559, #587)ISqlAdapter(#497) (note: this locks us down for any future interface additions)SqlBuilderneeds a lot of tests and love (SqlBuilder OR clause #573, OrWhere() causing unexpected behavior in Where() #647)CommandFlags(related: Dapper doesn't use prepared statements #474)Package Changes (breaking):
Dapper(deprecatingDapper.StrongName)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 additionsnetstandardsupport (Is there a Dapper.Rainbow release for .NET Core? #676)PRs to examine:
.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)GetmethodCleanup
.csprojsystem (off Preview 2project.jsontooling)src,tests,docs, etc. (and the same in the solution)/docs(GitHub feature post here, note: this allows PRs to update docs easily too)DbCommand.Cancel()is calledDiscussion - 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:
...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.