Dapper v3 planning and discussion
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 18.4k
- Forks
- 3.7k
- Avg merge
- 5h 8m
- Merged PRs (30d)
- 1
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
CancellationTokenparams on all Async methods (related: #484) - Dapper.Contrib
Insert<T>andInsert<T, TKey>changes forISqlAdapter(discussion in #640, related: #559, #587) - Dapper.Contrib - Allow custom
ISqlAdapter(#497) (note: this locks us down for any future interface additions) -
SqlBuilderneeds a lot of tests and love (#573, #647) - Overload reduction via
CommandFlags(related: #474)
Package Changes (breaking):
- Re-title to "Dapper" & rename Repo (#683)
- Strong-Name for
Dapper(deprecatingDapper.StrongName) - Strong-Name for
Dapper.Contrib(#430, #685)
Missing APIs (non-breaking):
-
QueryAsync<T>and related have a few missing from the single/first additions - Dapper.Rainbow
netstandardsupport (#676)
PRs to examine:
- #471 - Allow custom TypeHandlers for standard types (and
.SetValue()) (related: #206, #259, #303, #319, #433, #571, #607) - #458 - Custom type handlers for enums are ignored
- #512 - Fixed #497 by exposing SqlMapperExtensions.AdapterDictionary as public
- #558 - Temporary fix (really want to fix the actual issue: #555)
- #597 - Allow multi-map async queries to be unbuffered (related: #596)
- #636 - Dapper.Contrib - Support for composite keys in
Getmethod
Cleanup
- Documentation cleanup everywhere
- Moving to VS 2017 RC and new
.csprojsystem (off Preview 2project.jsontooling) - 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 (#651)
- Firebird Async support (#651 addition)
- #621 - Static property issues on params
- #613 - SimpleMemberMap became internal between 1.42 and 1.50.2
- #551 - Add example for literal replacement to Readme.md
- #480 - Documentation for SqlBuilder
- #451 - Clarify memory documentation
- #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.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
This is a roadmap rather than a bounded change; start by choosing one unchecked item and reading its referenced issue or PR, such as #484, #640, or #573. The payload names src, tests, docs, /docs, and provider testing as relevant areas, but it does not define a single completion criterion.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp, docker
- Domain
- backend, database, documentation, release, testing
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100