DapperLib / DapperLib/Dapper.Contrib

Dapper.Contrib inconsistencies and future development

Open
#61 0 comments 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C#
Stars
293
Forks
109
PR merge metrics
No merged PRs in 30d

Description

I've just started using Dapper.Contrib in a project and hit a few bugs. I've already submitted a couple of PRs for these. In saying that it looks like Dapper.Contrib needs a bit of love.

Here are just a few issues I've hit:

  • There is a lot of potential for issue with the property caching (ie. cache methods expose the instances of their underlying storage List<> allowing callers to modify the cache - DapperLib/Dapper#418).
  • Formatter/provider is not always used for formatting ColumnName and ColumnNameEquals statements, some places use hard coded formatting strings which may only work 100% for certain database engines/connection types
  • I've noticed inconsistencies between sync and async implementations; some bugs have been fixed in the sync method but not the async version. It would be good to get the common logic unified where possible.
  • Code/file structuring (13 classes/all code is in two files), not sure if this was done for a reason. IMO it would be nice to split it out into separate files and use partial classes a la Dapper proper. I'd hope it would make code maintenance and PR review a lot nicer

I could spend quite a bit of time tidying this code up and addressing some of the above points. I am happy to have a crack at this, however before I do that and submit a PR that may or may not be considered/merged I'd ask:

  • Is now a good time to do these changes? I know that a lot of the StackExchange OSS projects are going through the "Great Migration" to .NET Standard/Core
  • Is Dapper.Contrib still active in development? I notice a lot of outstanding PRs and Issues being left unresolved

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by auditing the two files containing the 13 classes, then trace the cache methods, formatter/provider use, and corresponding sync and async implementations. Because the issue proposes several possible changes rather than a defined deliverable, done would first require agreement on scope and acceptance criteria for the selected inconsistencies.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
databases
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.