Full Code of DapperLib/Dapper for AI

main 288730e69b05 cached
221 files
1.2 MB
282.2k tokens
2123 symbols
1 requests
Download .txt
Showing preview only (1,349K chars total). Download the full file or copy to clipboard to get everything.
Repository: DapperLib/Dapper
Branch: main
Commit: 288730e69b05
Files: 221
Total size: 1.2 MB

Directory structure:
gitextract_2tqsalxj/

├── .editorconfig
├── .gitattributes
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   └── bug_report.md
│   └── workflows/
│       ├── cla.yml
│       └── main.yml
├── .gitignore
├── Build.csproj
├── Dapper/
│   ├── CommandDefinition.cs
│   ├── CommandFlags.cs
│   ├── CompiledRegex.cs
│   ├── CustomPropertyTypeMap.cs
│   ├── Dapper.csproj
│   ├── DataTableHandler.cs
│   ├── DbString.cs
│   ├── DefaultTypeMap.cs
│   ├── DynamicParameters.CachedOutputSetters.cs
│   ├── DynamicParameters.ParamInfo.cs
│   ├── DynamicParameters.cs
│   ├── ExplicitConstructorAttribute.cs
│   ├── Extensions.cs
│   ├── FeatureSupport.cs
│   ├── Global.cs
│   ├── NRT.cs
│   ├── Properties/
│   │   └── AssemblyInfo.cs
│   ├── PublicAPI/
│   │   ├── net461/
│   │   │   ├── PublicAPI.Shipped.txt
│   │   │   └── PublicAPI.Unshipped.txt
│   │   ├── net8.0/
│   │   │   ├── PublicAPI.Shipped.txt
│   │   │   └── PublicAPI.Unshipped.txt
│   │   └── netstandard2.0/
│   │       ├── PublicAPI.Shipped.txt
│   │       └── PublicAPI.Unshipped.txt
│   ├── PublicAPI.Shipped.txt
│   ├── PublicAPI.Unshipped.txt
│   ├── SimpleMemberMap.cs
│   ├── SqlDataRecordHandler.cs
│   ├── SqlDataRecordListTVPParameter.cs
│   ├── SqlMapper.Async.cs
│   ├── SqlMapper.CacheInfo.cs
│   ├── SqlMapper.DapperRow.Descriptor.cs
│   ├── SqlMapper.DapperRow.cs
│   ├── SqlMapper.DapperRowMetaObject.cs
│   ├── SqlMapper.DapperTable.cs
│   ├── SqlMapper.DeserializerState.cs
│   ├── SqlMapper.DontMap.cs
│   ├── SqlMapper.GridReader.Async.cs
│   ├── SqlMapper.GridReader.cs
│   ├── SqlMapper.ICustomQueryParameter.cs
│   ├── SqlMapper.IDataReader.cs
│   ├── SqlMapper.IDynamicParameters.cs
│   ├── SqlMapper.IMemberMap.cs
│   ├── SqlMapper.IParameterCallbacks.cs
│   ├── SqlMapper.IParameterLookup.cs
│   ├── SqlMapper.ITypeHandler.cs
│   ├── SqlMapper.ITypeMap.cs
│   ├── SqlMapper.Identity.cs
│   ├── SqlMapper.Link.cs
│   ├── SqlMapper.LiteralToken.cs
│   ├── SqlMapper.Settings.cs
│   ├── SqlMapper.TypeDeserializerCache.cs
│   ├── SqlMapper.TypeHandler.cs
│   ├── SqlMapper.TypeHandlerCache.cs
│   ├── SqlMapper.cs
│   ├── TableValuedParameter.cs
│   ├── TypeExtensions.cs
│   ├── UdtTypeHandler.cs
│   ├── WrappedDataReader.cs
│   ├── WrappedReader.cs
│   └── XmlHandlers.cs
├── Dapper.EntityFramework/
│   ├── Dapper.EntityFramework.csproj
│   ├── DbGeographyHandler.cs
│   ├── DbGeometryHandler.cs
│   ├── Handlers.cs
│   ├── PublicAPI.Shipped.txt
│   └── PublicAPI.Unshipped.txt
├── Dapper.EntityFramework.StrongName/
│   └── Dapper.EntityFramework.StrongName.csproj
├── Dapper.ProviderTools/
│   ├── BulkCopy.cs
│   ├── Dapper.ProviderTools.csproj
│   ├── DbConnectionExtensions.cs
│   ├── DbExceptionExtensions.cs
│   ├── Internal/
│   │   └── DynamicBulkCopy.cs
│   ├── PublicAPI.Shipped.txt
│   └── PublicAPI.Unshipped.txt
├── Dapper.Rainbow/
│   ├── Dapper.Rainbow.csproj
│   ├── Database.Async.cs
│   ├── Database.cs
│   ├── IgnorePropertyAttribute.cs
│   ├── Snapshotter.cs
│   ├── SqlCompactDatabase.cs
│   └── readme.md
├── Dapper.SqlBuilder/
│   ├── Dapper.SqlBuilder.csproj
│   ├── PublicAPI.Shipped.txt
│   ├── PublicAPI.Unshipped.txt
│   ├── Readme.md
│   └── SqlBuilder.cs
├── Dapper.StrongName/
│   └── Dapper.StrongName.csproj
├── Dapper.sln
├── Dapper.sln.DotSettings
├── Dapper.snk
├── Directory.Build.props
├── Directory.Build.targets
├── Directory.Packages.props
├── License.txt
├── NonCLA.md
├── Readme.md
├── appveyor.yml
├── benchmarks/
│   ├── Dapper.Tests.Performance/
│   │   ├── Benchmarks.Belgrade.cs
│   │   ├── Benchmarks.Dapper.cs
│   │   ├── Benchmarks.Dashing.cs
│   │   ├── Benchmarks.EntityFramework.cs
│   │   ├── Benchmarks.EntityFrameworkCore.cs
│   │   ├── Benchmarks.HandCoded.cs
│   │   ├── Benchmarks.Linq2DB.cs
│   │   ├── Benchmarks.Linq2Sql.cs
│   │   ├── Benchmarks.Massive.cs
│   │   ├── Benchmarks.Mighty.cs
│   │   ├── Benchmarks.NHibernate.cs
│   │   ├── Benchmarks.Norm.cs
│   │   ├── Benchmarks.PetaPoco.cs
│   │   ├── Benchmarks.RepoDB.cs
│   │   ├── Benchmarks.ServiceStack.cs
│   │   ├── Benchmarks.SqlMarshal.cs
│   │   ├── Benchmarks.Susanoo.cs
│   │   ├── Benchmarks.XPO.cs
│   │   ├── Benchmarks.cs
│   │   ├── Config.cs
│   │   ├── Dapper.Tests.Performance.csproj
│   │   ├── DapperCacheImpact.cs
│   │   ├── Dashing/
│   │   │   ├── DashingConfiguration.cs
│   │   │   └── Post.cs
│   │   ├── EntityFramework/
│   │   │   └── EFContext.cs
│   │   ├── EntityFrameworkCore/
│   │   │   └── EFCoreContext.cs
│   │   ├── Helpers/
│   │   │   ├── ORMColum.cs
│   │   │   └── ReturnColum.cs
│   │   ├── LegacyTests.cs
│   │   ├── Linq2DB/
│   │   │   ├── ConnectionStringSettings.cs
│   │   │   ├── Linq2DBContext.cs
│   │   │   └── Linq2DbSettings.cs
│   │   ├── Linq2Sql/
│   │   │   ├── DataClasses.dbml
│   │   │   ├── DataClasses.dbml.layout
│   │   │   └── DataClasses.designer.cs
│   │   ├── Massive/
│   │   │   └── Massive.cs
│   │   ├── NHibernate/
│   │   │   ├── NHibernateHelper.cs
│   │   │   ├── Post.hbm.xml
│   │   │   └── hibernate.cfg.xml
│   │   ├── PetaPoco/
│   │   │   └── PetaPoco.cs
│   │   ├── Post.cs
│   │   ├── Program.cs
│   │   ├── SqlDataReaderHelper.cs
│   │   ├── XPO/
│   │   │   └── Post.cs
│   │   └── app.config
│   └── Directory.Build.props
├── build.cmd
├── build.ps1
├── docs/
│   ├── _config.yml
│   ├── dapperplus.md
│   ├── docs.csproj
│   ├── index.md
│   └── readme.md
├── global.json
├── nuget.config
├── signatures/
│   └── version1/
│       └── cla.json
├── tests/
│   ├── Dapper.Tests/
│   │   ├── App.config
│   │   ├── AsyncTests.cs
│   │   ├── ConstructorTests.cs
│   │   ├── Dapper.Tests.csproj
│   │   ├── DataReaderTests.cs
│   │   ├── DateTimeOnlyTests.cs
│   │   ├── DecimalTests.cs
│   │   ├── EnumTests.cs
│   │   ├── Helpers/
│   │   │   ├── Attributes.cs
│   │   │   ├── Common.cs
│   │   │   ├── IsExternalInit.cs
│   │   │   ├── SqlServerTypesLoader.cs
│   │   │   ├── TransactedConnection.cs
│   │   │   └── XunitSkippable.cs
│   │   ├── LiteralTests.cs
│   │   ├── MiscTests.cs
│   │   ├── MultiMapTests.cs
│   │   ├── NullTests.cs
│   │   ├── ParameterTests.cs
│   │   ├── ProcedureTests.cs
│   │   ├── ProviderTests.cs
│   │   ├── Providers/
│   │   │   ├── DuckDBTests.cs
│   │   │   ├── EntityFrameworkTests.cs
│   │   │   ├── FirebirdTests.cs
│   │   │   ├── Linq2SqlTests.cs
│   │   │   ├── MySQLTests.cs
│   │   │   ├── OLDEBTests.cs
│   │   │   ├── PostgresqlTests.cs
│   │   │   ├── SnowflakeTests.cs
│   │   │   └── SqliteTests.cs
│   │   ├── QueryMultipleTests.cs
│   │   ├── SharedTypes/
│   │   │   ├── Address.cs
│   │   │   ├── Bar1.cs
│   │   │   ├── Category.cs
│   │   │   ├── Comment.cs
│   │   │   ├── Dog.cs
│   │   │   ├── Enums.cs
│   │   │   ├── Foo1.cs
│   │   │   ├── HazNameId.cs
│   │   │   ├── Index.cs
│   │   │   ├── Person.cs
│   │   │   ├── Post.cs
│   │   │   ├── Product.cs
│   │   │   ├── ReviewBoard.cs
│   │   │   ├── ShortEnum.cs
│   │   │   ├── SomeType.cs
│   │   │   └── User.cs
│   │   ├── SingleRowTests.cs
│   │   ├── SqlBuilderTests.cs
│   │   ├── TestBase.cs
│   │   ├── TransactionTests.cs
│   │   ├── TupleTests.cs
│   │   ├── TypeHandlerTests.cs
│   │   ├── WrappedReaderTests.cs
│   │   ├── XmlTests.cs
│   │   └── xunit.runner.json
│   ├── Directory.Build.props
│   ├── Directory.Build.targets
│   └── docker-compose.yml
└── version.json

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
# EditorConfig is awesome:http://EditorConfig.org

# top-most EditorConfig file
root = true

# Don't use tabs for indentation.
[*]
indent_style = space
# (Please don't specify an indent_size here; that has too many unintended consequences.)

# Code files
[*.{cs,csx,vb,vbx}]
indent_size = 4
insert_final_newline = true
charset = utf-8-bom

# Xml project files
[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj}]
indent_size = 2

# Xml config files
[*.{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct}]
indent_size = 2

# JSON files
[*.json]
indent_size = 2

# Dotnet code style settings:
[*.{cs,vb}]
# Sort using and Import directives with System.* appearing first
dotnet_sort_system_directives_first = true
# Avoid "this." and "Me." if not necessary
dotnet_style_qualification_for_field = false:suggestion
dotnet_style_qualification_for_property = false:suggestion
dotnet_style_qualification_for_method = false:suggestion
dotnet_style_qualification_for_event = false:suggestion

# Use language keywords instead of framework type names for type references
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
dotnet_style_predefined_type_for_member_access = true:suggestion

# Suggest more modern language features when available
dotnet_style_object_initializer = true:suggestion
dotnet_style_collection_initializer = true:suggestion
dotnet_style_coalesce_expression = true:suggestion
dotnet_style_null_propagation = true:suggestion
dotnet_style_explicit_tuple_names = true:suggestion

# CSharp code style settings:
[*.cs]
# Prefer "var" everywhere
#csharp_style_var_for_built_in_types = true:suggestion
#csharp_style_var_when_type_is_apparent = false:suggestion
#csharp_style_var_elsewhere = true:suggestion

# Prefer method-like constructs to have a expression-body
csharp_style_expression_bodied_methods = true:none
csharp_style_expression_bodied_constructors = true:none
csharp_style_expression_bodied_operators = true:none

# Prefer property-like constructs to have an expression-body
csharp_style_expression_bodied_properties = true:none
csharp_style_expression_bodied_indexers = true:none
csharp_style_expression_bodied_accessors = true:none

# Suggest more modern language features when available
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
csharp_style_inlined_variable_declaration = true:suggestion
csharp_style_throw_expression = true:suggestion
csharp_style_conditional_delegate_call = true:suggestion

# Newline settings
csharp_new_line_before_open_brace = all
csharp_new_line_before_else = true
csharp_new_line_before_catch = true
csharp_new_line_before_finally = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_members_in_anonymous_types = true

================================================
FILE: .gitattributes
================================================
* text=auto

*.doc  diff=astextplain
*.DOC	diff=astextplain
*.docx	diff=astextplain
*.DOCX	diff=astextplain
*.dot	diff=astextplain
*.DOT	diff=astextplain
*.pdf	diff=astextplain
*.PDF	diff=astextplain
*.rtf	diff=astextplain
*.RTF	diff=astextplain

*.jpg binary
*.png binary
*.gif binary

*.cs -text diff=csharp 
*.vb -text
*.c -text
*.cpp -text
*.cxx -text
*.h -text
*.hxx -text
*.py -text
*.rb -text
*.java -text
*.html -text
*.htm -text
*.css -text
*.scss -text
*.sass -text
*.less -text
*.js -text
*.lisp -text
*.clj -text
*.sql -text
*.php -text
*.lua -text
*.m -text
*.asm -text
*.erl -text
*.fs -text
*.fsx -text
*.hs -text

*.csproj -text merge=union 
*.vbproj -text merge=union 
*.fsproj -text merge=union 
*.dbproj -text merge=union 
*.sln -text merge=union 


================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms

github: [mgravell, dapperlib]
custom: ["https://www.buymeacoffee.com/marcgravell"]


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: bug, needs-triage
assignees: ''

---

**Check your library version, and try updating**
To help, we're going to need to know your library version. If it isn't the latest: *go do that* - it might
fix the problem, and even if it doesn't: you're going to need to update if we find a problem and fix it,
so you might as well get ready for that now.

**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected and actual behavior**
A clear and concise description of what you expected to happen, and what actually happens.

**Additional context**
Add any other context about the problem here:
- what DB backend (and version) are you using, if relevant?
- what ADO.NET provider (and version) are you using, if relevant?
- what OS and .NET runtime (and version) are you using, if relevant?


================================================
FILE: .github/workflows/cla.yml
================================================
name: "CLA Assistant"
on:
  issue_comment:
    types: [created]
  pull_request_target:
    types: [opened,closed,synchronize]

# explicitly configure permissions, in case your GITHUB_TOKEN workflow permissions are set to read-only in repository settings
permissions:
  actions: write
  contents: write
  pull-requests: write
  statuses: write

jobs:
  CLAAssistant:
    runs-on: ubuntu-latest
    steps:
      - name: "CLA Assistant"
        if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request_target'
        uses: contributor-assistant/github-action@v2.3.0
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          # the below token should have repo scope and must be manually added by you in the repository's secret
          # This token is required only if you have configured to store the signatures in a remote repository/organization
          PERSONAL_ACCESS_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
        with:
          path-to-signatures: 'signatures/version1/cla.json'
          path-to-document: 'https://raw.githubusercontent.com/DapperLib/Dapper/main/NonCLA.md' # e.g. a CLA or a DCO document
          # branch should not be protected
          branch: 'main'
          # allowlist: user1,bot*

         # the followings are the optional inputs - If the optional inputs are not given, then default values will be taken
          #remote-organization-name: enter the remote organization name where the signatures should be stored (Default is storing the signatures in the same repository)
          #remote-repository-name: enter the  remote repository name where the signatures should be stored (Default is storing the signatures in the same repository)
          #create-file-commit-message: 'For example: Creating file for storing CLA Signatures'
          #signed-commit-message: 'For example: $contributorName has signed the CLA in $owner/$repo#$pullRequestNo'
          #custom-notsigned-prcomment: 'pull request comment with Introductory message to ask new contributors to sign'
          #custom-pr-sign-comment: 'The signature to be committed in order to sign the CLA'
          #custom-allsigned-prcomment: 'pull request comment when all contributors has signed, defaults to **CLA Assistant Lite bot** All Contributors have signed the CLA.'
          #lock-pullrequest-aftermerge: false - if you don't want this bot to automatically lock the pull request after merging (default - true)
          #use-dco-flag: true - If you are using DCO instead of CLA


================================================
FILE: .github/workflows/main.yml
================================================
name: Main Build

on:
  pull_request:
  push:
    branches:
    - main
    paths:
    - '*'
    - '!/docs/*' # Don't run workflow when files are only in the /docs directory

jobs:
  vm-job:
    name: Ubuntu
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres
        ports:
        - 5432/tcp
        env:
          POSTGRES_USER: postgres
          POSTGRES_PASSWORD: postgres
          POSTGRES_DB: test
        options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
      sqlserver:
        image: mcr.microsoft.com/mssql/server:2019-latest
        ports:
        - 1433/tcp
        env:
          ACCEPT_EULA: Y
          SA_PASSWORD: "Password."
      mysql:
        image: mysql
        ports:
        - 3306/tcp
        env:
          MYSQL_ROOT_PASSWORD: root
          MYSQL_DATABASE: test
    steps:
    - name: Checkout code
      uses: actions/checkout@v1
    - name: Setup dotnet
      uses: actions/setup-dotnet@v4
      with:
        dotnet-version: '10.0.x'
    - name: .NET Build
      run: dotnet build Build.csproj -c Release /p:CI=true
    - name: Dapper Tests
      run: dotnet test tests/Dapper.Tests/Dapper.Tests.csproj -c Release --logger GitHubActions -p:CI=true -p:TestTfmsInParallel=false
      env:
        MySqlConnectionString: Server=localhost;Port=${{ job.services.mysql.ports[3306] }};Uid=root;Pwd=root;Database=test;Allow User Variables=true
        OLEDBConnectionString: Provider=SQLOLEDB;Server=tcp:localhost,${{ job.services.sqlserver.ports[1433] }};Database=tempdb;User Id=sa;Password=Password.;
        PostgesConnectionString: Server=localhost;Port=${{ job.services.postgres.ports[5432] }};Database=test;User Id=postgres;Password=postgres;
        SqlServerConnectionString: Server=tcp:localhost,${{ job.services.sqlserver.ports[1433] }};Database=tempdb;User Id=sa;Password=Password.;
    - name: .NET Lib Pack
      run: dotnet pack Build.csproj --no-build -c Release /p:PackageOutputPath=%CD%\.nupkgs /p:CI=true


================================================
FILE: .gitignore
================================================
/*.suo
.vs/
.vscode/
bin/
obj/
/*.user
_Resharper*
.hgtags
NuGet.exe
*.user
*.nupkg
.nupkgs/
.docstats
*.ide/
*.lock.json
*.coverage
Test.DB.*
TestResults/
Dapper.Tests/*.sdf
Dapper.Tests/SqlServerTypes/
.dotnet/*
BenchmarkDotNet.Artifacts/
.idea/
.DS_Store

================================================
FILE: Build.csproj
================================================
<Project Sdk="Microsoft.Build.Traversal/2.0.24">
  <ItemGroup>
    <ProjectReference Include="benchmarks/**/*.csproj" />
    <ProjectReference Include="Dapper*/*.csproj" />
    <ProjectReference Include="tests/**/*.csproj" />
  </ItemGroup>
</Project>

================================================
FILE: Dapper/CommandDefinition.cs
================================================
using System;
using System.Data;
using System.Reflection;
using System.Reflection.Emit;
using System.Threading;

namespace Dapper
{
    /// <summary>
    /// Represents the key aspects of a sql operation
    /// </summary>
    public readonly struct CommandDefinition
    {
        internal static CommandDefinition ForCallback(object? parameters, CommandFlags flags)
        {
            return new CommandDefinition(parameters is DynamicParameters ? parameters : null, flags);
        }

        internal void OnCompleted()
        {
            (Parameters as SqlMapper.IParameterCallbacks)?.OnCompleted();
        }

        /// <summary>
        /// The command (sql or a stored-procedure name) to execute
        /// </summary>
        public string CommandText { get; }

        /// <summary>
        /// The parameters associated with the command
        /// </summary>
        public object? Parameters { get; }

        /// <summary>
        /// The active transaction for the command
        /// </summary>
        public IDbTransaction? Transaction { get; }

        /// <summary>
        /// The effective timeout for the command
        /// </summary>
        public int? CommandTimeout { get; }

        internal readonly CommandType CommandTypeDirect;

        /// <summary>
        /// The type of command that the command-text represents
        /// </summary>
#if DEBUG // prevent use in our own code
        [Obsolete("Prefer " + nameof(CommandTypeDirect), true)]
#endif
        public CommandType? CommandType => CommandTypeDirect;

        /// <summary>
        /// Should data be buffered before returning?
        /// </summary>
        public bool Buffered => (Flags & CommandFlags.Buffered) != 0;

        /// <summary>
        /// Should the plan for this query be cached?
        /// </summary>
        internal bool AddToCache => (Flags & CommandFlags.NoCache) == 0;

        /// <summary>
        /// Additional state flags against this command
        /// </summary>
        public CommandFlags Flags { get; }

        /// <summary>
        /// Can async queries be pipelined?
        /// </summary>
        public bool Pipelined => (Flags & CommandFlags.Pipelined) != 0;

        /// <summary>
        /// Initialize the command definition
        /// </summary>
        /// <param name="commandText">The text for this command.</param>
        /// <param name="parameters">The parameters for this command.</param>
        /// <param name="transaction">The transaction for this command to participate in.</param>
        /// <param name="commandTimeout">The timeout (in seconds) for this command.</param>
        /// <param name="commandType">The <see cref="CommandType"/> for this command.</param>
        /// <param name="flags">The behavior flags for this command.</param>
        /// <param name="cancellationToken">The cancellation token for this command.</param>
        public CommandDefinition(string commandText, object? parameters = null, IDbTransaction? transaction = null, int? commandTimeout = null,
                                 CommandType? commandType = null, CommandFlags flags = CommandFlags.Buffered
                                 , CancellationToken cancellationToken = default
            )
        {
            CommandText = commandText;
            Parameters = parameters;
            Transaction = transaction;
            CommandTimeout = commandTimeout;
            CommandTypeDirect = commandType ?? InferCommandType(commandText);
            Flags = flags;
            CancellationToken = cancellationToken;
        }

        internal static CommandType InferCommandType(string sql)
        {
            // if the sql contains any whitespace character (space/tab/cr/lf/etc - via unicode),
            // has operators, comments, semi-colon, or a known exception: interpret as ad-hoc;
            // otherwise, simple names like "SomeName" should be treated as a stored-proc
            // (note TableDirect would need to be specified explicitly, but in reality providers don't usually support TableDirect anyway)

            if (sql is null || CompiledRegex.WhitespaceOrReserved.IsMatch(sql)) return System.Data.CommandType.Text;
            return System.Data.CommandType.StoredProcedure;
        }

        private CommandDefinition(object? parameters, CommandFlags flags) : this()
        {
            Parameters = parameters;
            Flags = flags;
            CommandText = "";
        }

        /// <summary>
        /// For asynchronous operations, the cancellation-token
        /// </summary>
        public CancellationToken CancellationToken { get; }

        internal IDbCommand SetupCommand(IDbConnection cnn, Action<IDbCommand, object?>? paramReader)
        {
            var cmd = cnn.CreateCommand();
            var init = GetInit(cmd.GetType());
            init?.Invoke(cmd);
            if (Transaction is not null)
                cmd.Transaction = Transaction;
            cmd.CommandText = CommandText;
            if (CommandTimeout.HasValue)
            {
                cmd.CommandTimeout = CommandTimeout.Value;
            }
            else if (SqlMapper.Settings.CommandTimeout.HasValue)
            {
                cmd.CommandTimeout = SqlMapper.Settings.CommandTimeout.Value;
            }
            cmd.CommandType = CommandTypeDirect;
            paramReader?.Invoke(cmd, Parameters);
            return cmd;
        }

        private static SqlMapper.Link<Type, Action<IDbCommand>>? commandInitCache;

        internal static void ResetCommandInitCache()
            => SqlMapper.Link<Type, Action<IDbCommand>>.Clear(ref commandInitCache);

        private static Action<IDbCommand>? GetInit(Type commandType)
        {
            if (commandType is null)
                return null; // GIGO
            if (SqlMapper.Link<Type, Action<IDbCommand>>.TryGet(commandInitCache, commandType, out Action<IDbCommand>? action))
            {
                return action;
            }
            var bindByName = GetBasicPropertySetter(commandType, "BindByName", typeof(bool));
            var initialLongFetchSize = GetBasicPropertySetter(commandType, "InitialLONGFetchSize", typeof(int));
            var fetchSize = GetBasicPropertySetter(commandType, "FetchSize", typeof(long));

            action = null;
            if (bindByName is not null || initialLongFetchSize is not null || fetchSize is not null)
            {
                var method = new DynamicMethod(commandType.Name + "_init", null, new Type[] { typeof(IDbCommand) });
                var il = method.GetILGenerator();

                if (bindByName is not null)
                {
                    // .BindByName = true
                    il.Emit(OpCodes.Ldarg_0);
                    il.Emit(OpCodes.Castclass, commandType);
                    il.Emit(OpCodes.Ldc_I4_1);
                    il.EmitCall(OpCodes.Callvirt, bindByName, null);
                }
                if (initialLongFetchSize is not null)
                {
                    // .InitialLONGFetchSize = -1
                    il.Emit(OpCodes.Ldarg_0);
                    il.Emit(OpCodes.Castclass, commandType);
                    il.Emit(OpCodes.Ldc_I4_M1);
                    il.EmitCall(OpCodes.Callvirt, initialLongFetchSize, null);
                }
                if (fetchSize is not null)
                {
                    var snapshot = SqlMapper.Settings.FetchSize;
                    if (snapshot >= 0)
                    {
                        // .FetchSize = {withValue}
                        il.Emit(OpCodes.Ldarg_0);
                        il.Emit(OpCodes.Castclass, commandType);
                        il.Emit(OpCodes.Ldc_I8, snapshot); // bake it as a constant
                        il.EmitCall(OpCodes.Callvirt, fetchSize, null);
                    }
                }
                il.Emit(OpCodes.Ret);
                action = (Action<IDbCommand>)method.CreateDelegate(typeof(Action<IDbCommand>));
            }
            // cache it
            SqlMapper.Link<Type, Action<IDbCommand>>.TryAdd(ref commandInitCache, commandType, ref action!);
            return action;
        }

        private static MethodInfo? GetBasicPropertySetter(Type declaringType, string name, Type expectedType)
        {
            var prop = declaringType.GetProperty(name, BindingFlags.Public | BindingFlags.Instance);
            if (prop?.CanWrite == true && prop.PropertyType == expectedType && prop.GetIndexParameters().Length == 0)
            {
                return prop.GetSetMethod();
            }
            return null;
        }
    }
}


================================================
FILE: Dapper/CommandFlags.cs
================================================
using System;

namespace Dapper
{
    /// <summary>
    /// Additional state flags that control command behaviour
    /// </summary>
    [Flags]
    public enum CommandFlags
    {
        /// <summary>
        /// No additional flags
        /// </summary>
        None = 0,
        /// <summary>
        /// Should data be buffered before returning?
        /// </summary>
        Buffered = 1,
        /// <summary>
        /// Can async queries be pipelined?
        /// </summary>
        Pipelined = 2,
        /// <summary>
        /// Should the plan cache be bypassed?
        /// </summary>
        NoCache = 4,
    }
}


================================================
FILE: Dapper/CompiledRegex.cs
================================================
using System.Diagnostics.CodeAnalysis;
using System.Text.RegularExpressions;

namespace Dapper;

internal static partial class CompiledRegex
{
#if DEBUG && NET7_0_OR_GREATER // enables colorization in IDE
    [StringSyntax("Regex")]
#endif
    private const string
        WhitespaceOrReservedPattern = @"[\s;/\-+*]|^vacuum$|^commit$|^rollback$|^revert$",
        LegacyParameterPattern = @"(?<![\p{L}\p{N}@_])[?@:](?![\p{L}\p{N}@_])", // look for ? / @ / : *by itself* - see SupportLegacyParameterTokens
        LiteralTokensPattern = @"(?<![\p{L}\p{N}_])\{=([\p{L}\p{N}_]+)\}", // look for {=abc} to inject member abc as a literal
        PseudoPositionalPattern = @"\?([\p{L}_][\p{L}\p{N}_]*)\?"; // look for ?abc? for the purpose of subst back to ? using member abc


#if NET7_0_OR_GREATER // use regex code generator (this doesn't work for down-level, even if you define the attribute manually)
    [GeneratedRegex(LegacyParameterPattern, RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.CultureInvariant)]
    private static partial Regex LegacyParameterGen();

    [GeneratedRegex(LiteralTokensPattern, RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.CultureInvariant)]
    private static partial Regex LiteralTokensGen();

    [GeneratedRegex(PseudoPositionalPattern, RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.CultureInvariant)]
    private static partial Regex PseudoPositionalGen();

    [GeneratedRegex(WhitespaceOrReservedPattern, RegexOptions.IgnoreCase, "en-US")]
    private static partial Regex WhitespaceOrReservedGen();

    internal static Regex LegacyParameter => LegacyParameterGen();
    internal static Regex LiteralTokens => LiteralTokensGen();
    internal static Regex PseudoPositional => PseudoPositionalGen();
    internal static Regex WhitespaceOrReserved => WhitespaceOrReservedGen();
#else
    internal static Regex LegacyParameter { get; }
        = new(LegacyParameterPattern, RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.CultureInvariant | RegexOptions.Compiled);
    internal static Regex LiteralTokens { get; }
        = new(LiteralTokensPattern, RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.CultureInvariant | RegexOptions.Compiled);
    internal static Regex PseudoPositional { get; }
    = new(PseudoPositionalPattern, RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.Compiled);
    internal static Regex WhitespaceOrReserved { get; }
        = new(WhitespaceOrReservedPattern, RegexOptions.Compiled | RegexOptions.IgnoreCase);
#endif
}


================================================
FILE: Dapper/CustomPropertyTypeMap.cs
================================================
using System;
using System.Reflection;

namespace Dapper
{
    /// <summary>
    /// Implements custom property mapping by user provided criteria (usually presence of some custom attribute with column to member mapping)
    /// </summary>
    public sealed class CustomPropertyTypeMap : SqlMapper.ITypeMap
    {
        private readonly Type _type;
        private readonly Func<Type, string, PropertyInfo> _propertySelector;

        /// <summary>
        /// Creates custom property mapping
        /// </summary>
        /// <param name="type">Target entity type</param>
        /// <param name="propertySelector">Property selector based on target type and DataReader column name</param>
        public CustomPropertyTypeMap(Type type, Func<Type, string, PropertyInfo> propertySelector)
        {
            _type = type ?? throw new ArgumentNullException(nameof(type));
            _propertySelector = propertySelector ?? throw new ArgumentNullException(nameof(propertySelector));
        }

        /// <summary>
        /// Always returns default constructor
        /// </summary>
        /// <param name="names">DataReader column names</param>
        /// <param name="types">DataReader column types</param>
        /// <returns>Default constructor</returns>
        public ConstructorInfo? FindConstructor(string[] names, Type[] types) =>
            _type.GetConstructor(Array.Empty<Type>())!;

        /// <summary>
        /// Always returns null
        /// </summary>
        /// <returns></returns>
        public ConstructorInfo? FindExplicitConstructor() => null;

        /// <summary>
        /// Not implemented as far as default constructor used for all cases
        /// </summary>
        /// <param name="constructor"></param>
        /// <param name="columnName"></param>
        /// <returns></returns>
        public SqlMapper.IMemberMap GetConstructorParameter(ConstructorInfo constructor, string columnName)
        {
            throw new NotSupportedException();
        }

        /// <summary>
        /// Returns property based on selector strategy
        /// </summary>
        /// <param name="columnName">DataReader column name</param>
        /// <returns>Property member map</returns>
        public SqlMapper.IMemberMap? GetMember(string columnName)
        {
            var prop = _propertySelector(_type, columnName);
            return prop is not null ? new SimpleMemberMap(columnName, prop) : null;
        }
    }
}


================================================
FILE: Dapper/Dapper.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <AssemblyName>Dapper</AssemblyName>
    <Title>Dapper</Title>
    <PackageTags>orm;sql;micro-orm</PackageTags>
    <Description>A high performance Micro-ORM supporting SQL Server, MySQL, Sqlite, SqlCE, Firebird etc. Major Sponsor: Dapper Plus from ZZZ Projects.</Description>
    <Authors>Sam Saffron;Marc Gravell;Nick Craver</Authors>
    <TargetFrameworks>net461;netstandard2.0;net8.0;net10.0</TargetFrameworks>
    <Nullable>enable</Nullable>
    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
  </PropertyGroup>
  <ItemGroup>
    <!-- common base API goes here -->
    <AdditionalFiles Include="PublicAPI.*.txt" />
    <!-- TFM-specific additions go here; in reality this just means "current" (to avoid DisposeAsync etc in netfx/netstandard) -->
    <AdditionalFiles Include="PublicAPI/$(TargetFramework)/PublicAPI.*.txt" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="Properties\" />

    <PackageReference Include="Microsoft.CodeAnalysis.PublicApiAnalyzers">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
    </PackageReference>
  </ItemGroup>

  <ItemGroup Condition=" '$(TargetFramework)' == 'net461'">
    <PackageReference Include="Microsoft.Bcl.AsyncInterfaces" />
  </ItemGroup>
  
  <ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.0'">
    <PackageReference Include="Microsoft.Bcl.AsyncInterfaces" />
    <PackageReference Include="System.Reflection.Emit.Lightweight" />
  </ItemGroup>
</Project>


================================================
FILE: Dapper/DataTableHandler.cs
================================================
using System;
using System.Data;
namespace Dapper
{
    internal sealed class DataTableHandler : SqlMapper.ITypeHandler
    {
        public object Parse(Type destinationType, object value)
        {
            throw new NotImplementedException();
        }

        public void SetValue(IDbDataParameter parameter, object value)
        {
            TableValuedParameter.Set(parameter, value as DataTable, null);
        }
    }
}


================================================
FILE: Dapper/DbString.cs
================================================
using System;
using System.Data;

namespace Dapper
{
    /// <summary>
    /// This class represents a SQL string, it can be used if you need to denote your parameter is a Char vs VarChar vs nVarChar vs nChar
    /// </summary>
    public sealed class DbString : SqlMapper.ICustomQueryParameter
    {
        /// <summary>
        /// Default value for IsAnsi.
        /// </summary>
        public static bool IsAnsiDefault { get; set; }

        /// <summary>
        /// A value to set the default value of strings
        /// going through Dapper. Default is 4000, any value larger than this
        /// field will not have the default value applied.
        /// </summary>
        public const int DefaultLength = 4000;

        /// <summary>
        /// Create a new DbString
        /// </summary>
        public DbString()
        {
            Length = -1;
            IsAnsi = IsAnsiDefault;
        }

        /// <summary>
        /// Create a new DbString
        /// </summary>
        public DbString(string? value, int length = -1)
        {
            Value = value;
            Length = length;
            IsAnsi = IsAnsiDefault;
        }

        /// <summary>
        /// Ansi vs Unicode 
        /// </summary>
        public bool IsAnsi { get; set; }
        /// <summary>
        /// Fixed length 
        /// </summary>
        public bool IsFixedLength { get; set; }
        /// <summary>
        /// Length of the string -1 for max
        /// </summary>
        public int Length { get; set; }
        /// <summary>
        /// The value of the string
        /// </summary>
        public string? Value { get; set; }

        /// <summary>
        /// Gets a string representation of this DbString.
        /// </summary>
        public override string ToString() => Value is null
            ? $"Dapper.DbString (Value: null, Length: {Length}, IsAnsi: {IsAnsi}, IsFixedLength: {IsFixedLength})"
            : $"Dapper.DbString (Value: '{Value}', Length: {Length}, IsAnsi: {IsAnsi}, IsFixedLength: {IsFixedLength})";

        /// <summary>
        /// Add the parameter to the command... internal use only
        /// </summary>
        /// <param name="command"></param>
        /// <param name="name"></param>
        public void AddParameter(IDbCommand command, string name)
        {
            if (IsFixedLength && Length == -1)
            {
                throw new InvalidOperationException("If specifying IsFixedLength,  a Length must also be specified");
            }
            bool add = !command.Parameters.Contains(name);
            IDbDataParameter param;
            if (add)
            {
                param = command.CreateParameter();
                param.ParameterName = name;
            }
            else
            {
                param = (IDbDataParameter)command.Parameters[name];
            }
#pragma warning disable 0618
            param.Value = SqlMapper.SanitizeParameterValue(Value);
#pragma warning restore 0618
            if (Length == -1 && Value is not null && Value.Length <= DefaultLength)
            {
                param.Size = DefaultLength;
            }
            else
            {
                param.Size = Length;
            }
            param.DbType = IsAnsi ? (IsFixedLength ? DbType.AnsiStringFixedLength : DbType.AnsiString) : (IsFixedLength ? DbType.StringFixedLength : DbType.String);
            if (add)
            {
                command.Parameters.Add(param);
            }
        }
    }
}


================================================
FILE: Dapper/DefaultTypeMap.cs
================================================
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;

namespace Dapper
{
    /// <summary>
    /// Represents default type mapping strategy used by Dapper
    /// </summary>
    public sealed class DefaultTypeMap : SqlMapper.ITypeMap
    {
        private readonly List<FieldInfo> _fields;
        private readonly Type _type;

        /// <summary>
        /// Creates default type map
        /// </summary>
        /// <param name="type">Entity type</param>
        public DefaultTypeMap(Type type)
        {
            if (type is null)
                throw new ArgumentNullException(nameof(type));

            _fields = GetSettableFields(type);
            Properties = GetSettableProps(type);
            _type = type;
        }

        internal static MethodInfo GetPropertySetterOrThrow(PropertyInfo propertyInfo, Type type)
        {
            return GetPropertySetter(propertyInfo, type) ?? Throw(propertyInfo);

            static MethodInfo Throw(PropertyInfo propertyInfo) => throw new InvalidOperationException("Property setting not found for: " + propertyInfo?.Name);
        }
        internal static MethodInfo? GetPropertySetter(PropertyInfo propertyInfo, Type type)
        {
            if (propertyInfo.DeclaringType == type) return propertyInfo.GetSetMethod(true);

            return propertyInfo.DeclaringType!.GetProperty(
                   propertyInfo.Name,
                   BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance,
                   Type.DefaultBinder,
                   propertyInfo.PropertyType,
                   propertyInfo.GetIndexParameters().Select(p => p.ParameterType).ToArray(),
                   null)!.GetSetMethod(true);
        }

        internal static List<PropertyInfo> GetSettableProps(Type t)
        {
            return t
                  .GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)
                  .Where(p => GetPropertySetter(p, t) is not null)
                  .ToList();
        }

        internal static List<FieldInfo> GetSettableFields(Type t)
        {
            return t.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).ToList();
        }

        /// <summary>
        /// Finds best constructor
        /// </summary>
        /// <param name="names">DataReader column names</param>
        /// <param name="types">DataReader column types</param>
        /// <returns>Matching constructor or default one</returns>
        public ConstructorInfo? FindConstructor(string[] names, Type[] types)
        {
            var constructors = _type.GetConstructors(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
            foreach (ConstructorInfo ctor in constructors.OrderBy(c => c.IsPublic ? 0 : (c.IsPrivate ? 2 : 1)).ThenBy(c => c.GetParameters().Length))
            {
                ParameterInfo[] ctorParameters = ctor.GetParameters();
                if (ctorParameters.Length == 0)
                    return ctor;

                if (ctorParameters.Length != types.Length)
                    continue;

                int i = 0;
                for (; i < ctorParameters.Length; i++)
                {
                    if (EqualsCI(ctorParameters[i].Name, names[i]))
                    { } // exact match
                    else if (MatchNamesWithUnderscores && EqualsCIU(ctorParameters[i].Name, names[i]))
                    { } // match after applying underscores
                    else
                    {
                        // not a name match
                        break;
                    }

                    if (types[i] == typeof(byte[]) && ctorParameters[i].ParameterType.FullName == SqlMapper.LinqBinary)
                        continue;
                    var unboxedType = Nullable.GetUnderlyingType(ctorParameters[i].ParameterType) ?? ctorParameters[i].ParameterType;
                    if ((unboxedType != types[i] && !SqlMapper.HasTypeHandler(unboxedType))
                        && !(unboxedType.IsEnum && Enum.GetUnderlyingType(unboxedType) == types[i])
                        && !(unboxedType == typeof(char) && types[i] == typeof(string))
                        && !(unboxedType.IsEnum && types[i] == typeof(string)))
                    {
                        break;
                    }
                }

                if (i == ctorParameters.Length)
                    return ctor;
            }

            return null;
        }

        /// <summary>
        /// Returns the constructor, if any, that has the ExplicitConstructorAttribute on it.
        /// </summary>
        public ConstructorInfo? FindExplicitConstructor()
        {
            var constructors = _type.GetConstructors(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
            var withAttr = constructors.Where(c => c.GetCustomAttributes(typeof(ExplicitConstructorAttribute), true).Length > 0).ToList();

            if (withAttr.Count == 1)
            {
                return withAttr[0];
            }

            return null;
        }

        /// <summary>
        /// Gets mapping for constructor parameter
        /// </summary>
        /// <param name="constructor">Constructor to resolve</param>
        /// <param name="columnName">DataReader column name</param>
        /// <returns>Mapping implementation</returns>
        public SqlMapper.IMemberMap GetConstructorParameter(ConstructorInfo constructor, string columnName)
        {
            var param = MatchFirstOrDefault(constructor.GetParameters(), columnName, static p => p.Name) ?? Throw(columnName);
            return new SimpleMemberMap(columnName, param);

            static ParameterInfo Throw(string name) => throw new ArgumentException("Constructor parameter not found for " + name);
        }

        /// <summary>
        /// Gets member mapping for column
        /// </summary>
        /// <param name="columnName">DataReader column name</param>
        /// <returns>Mapping implementation</returns>
        public SqlMapper.IMemberMap? GetMember(string columnName)
        {
            var property = MatchFirstOrDefault(Properties, columnName, static p => p.Name);

            if (property is not null)
                return new SimpleMemberMap(columnName, property);

            // roslyn automatically implemented properties, in particular for get-only properties: <{Name}>k__BackingField;
            var backingFieldName = "<" + columnName + ">k__BackingField";

            // preference order is:
            // exact match over underscore match, exact case over wrong case, backing fields over regular fields, match-inc-underscores over match-exc-underscores
            var field = _fields.Find(p => string.Equals(p.Name, columnName, StringComparison.Ordinal))
                ?? _fields.Find(p => string.Equals(p.Name, backingFieldName, StringComparison.Ordinal))
                ?? _fields.Find(p => string.Equals(p.Name, columnName, StringComparison.OrdinalIgnoreCase))
                ?? _fields.Find(p => string.Equals(p.Name, backingFieldName, StringComparison.OrdinalIgnoreCase));

            if (field is null && MatchNamesWithUnderscores)
            {
                var effectiveColumnName = columnName.Replace("_", "");
                backingFieldName = "<" + effectiveColumnName + ">k__BackingField";

                field = _fields.Find(p => string.Equals(p.Name, effectiveColumnName, StringComparison.Ordinal))
                    ?? _fields.Find(p => string.Equals(p.Name, backingFieldName, StringComparison.Ordinal))
                    ?? _fields.Find(p => string.Equals(p.Name, effectiveColumnName, StringComparison.OrdinalIgnoreCase))
                    ?? _fields.Find(p => string.Equals(p.Name, backingFieldName, StringComparison.OrdinalIgnoreCase));
            }

            if (field is not null)
                return new SimpleMemberMap(columnName, field);

            return null;
        }
        /// <summary>
        /// Should column names like User_Id be allowed to match properties/fields like UserId ?
        /// </summary>
        public static bool MatchNamesWithUnderscores { get; set; }

        static T? MatchFirstOrDefault<T>(IList<T>? members, string? name, Func<T, string?> selector) where T : class
        {
            if (members is { Count: > 0 })
            {
                // try exact first
                foreach (var member in members)
                {
                    if (string.Equals(name, selector(member), StringComparison.Ordinal))
                    {
                        return member;
                    }
                }
                // then exact ignoring case
                foreach (var member in members)
                {
                    if (string.Equals(name, selector(member), StringComparison.OrdinalIgnoreCase))
                    {
                        return member;
                    }
                }
                if (MatchNamesWithUnderscores)
                {
                    // same again, minus underscore delta
                    name = name?.Replace("_", "");

                    // match normalized column name vs actual property name
                    foreach (var member in members)
                    {
                        if (string.Equals(name, selector(member), StringComparison.Ordinal))
                        {
                            return member;
                        }
                    }
                    foreach (var member in members)
                    {
                        if (string.Equals(name, selector(member), StringComparison.OrdinalIgnoreCase))
                        {
                            return member;
                        }
                    }

                    // match normalized column name vs normalized property name
                    foreach (var member in members)
                    {
                        if (string.Equals(name, selector(member)?.Replace("_", ""), StringComparison.Ordinal))
                        {
                            return member;
                        }
                    }
                    foreach (var member in members)
                    {
                        if (string.Equals(name, selector(member)?.Replace("_", ""), StringComparison.OrdinalIgnoreCase))
                        {
                            return member;
                        }
                    }
                }
            }
            return null;
        }

        internal static bool EqualsCI(string? x, string? y)
            => string.Equals(x, y, StringComparison.OrdinalIgnoreCase);
        internal static bool EqualsCIU(string? x, string? y)
            => string.Equals(x?.Replace("_", ""), y?.Replace("_", ""), StringComparison.OrdinalIgnoreCase);

        /// <summary>
        /// The settable properties for this typemap
        /// </summary>
        public List<PropertyInfo> Properties { get; }
    }
}


================================================
FILE: Dapper/DynamicParameters.CachedOutputSetters.cs
================================================
using System.Collections;

namespace Dapper
{
    public partial class DynamicParameters
    {
        // The type here is used to differentiate the cache by type via generics
        // ReSharper disable once UnusedTypeParameter
        internal static class CachedOutputSetters<T>
        {
            // Intentional, abusing generics to get our cache splits
            // ReSharper disable once StaticMemberInGenericType
            public static readonly Hashtable Cache = new Hashtable();
        }
    }
}


================================================
FILE: Dapper/DynamicParameters.ParamInfo.cs
================================================
using System;
using System.Data;

namespace Dapper
{
    public partial class DynamicParameters
    {
        private sealed class ParamInfo
        {
            public string Name { get; set; } = null!;
            public object? Value { get; set; }
            public ParameterDirection ParameterDirection { get; set; }
            public DbType? DbType { get; set; }
            public int? Size { get; set; }
            public IDbDataParameter AttachedParam { get; set; } = null!;
            internal Action<object, DynamicParameters>? OutputCallback { get; set; }
            internal object OutputTarget { get; set; } = null!;
            internal bool CameFromTemplate { get; set; }

            public byte? Precision { get; set; }
            public byte? Scale { get; set; }
        }
    }
}


================================================
FILE: Dapper/DynamicParameters.cs
================================================
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
using System.Reflection.Emit;

namespace Dapper
{
    /// <summary>
    /// A bag of parameters that can be passed to the Dapper Query and Execute methods
    /// </summary>
    public partial class DynamicParameters : SqlMapper.IDynamicParameters, SqlMapper.IParameterLookup, SqlMapper.IParameterCallbacks
    {
        internal const DbType EnumerableMultiParameter = (DbType)(-1);
        private static readonly Dictionary<SqlMapper.Identity, Action<IDbCommand, object>> paramReaderCache = new Dictionary<SqlMapper.Identity, Action<IDbCommand, object>>();
        private readonly Dictionary<string, ParamInfo> parameters = new Dictionary<string, ParamInfo>();
        private List<object>? templates;

        object? SqlMapper.IParameterLookup.this[string name] =>
            parameters.TryGetValue(name, out ParamInfo? param) ? param.Value : null;

        /// <summary>
        /// construct a dynamic parameter bag
        /// </summary>
        public DynamicParameters()
        {
            RemoveUnused = true;
        }

        /// <summary>
        /// construct a dynamic parameter bag
        /// </summary>
        /// <param name="template">can be an anonymous type or a DynamicParameters bag</param>
        public DynamicParameters(object? template)
        {
            RemoveUnused = true;
            AddDynamicParams(template);
        }

        /// <summary>
        /// Append a whole object full of params to the dynamic
        /// EG: AddDynamicParams(new {A = 1, B = 2}) // will add property A and B to the dynamic
        /// </summary>
        /// <param name="param"></param>
        public void AddDynamicParams(object? param)
        {
            var obj = param;
            if (obj is not null)
            {
                if (obj is DynamicParameters subDynamic)
                {
                    if (subDynamic.parameters is not null)
                    {
                        foreach (var kvp in subDynamic.parameters)
                        {
                            parameters.Add(kvp.Key, kvp.Value);
                        }
                    }

                    if (subDynamic.templates is not null)
                    {
                        templates ??= new List<object>();
                        foreach (var t in subDynamic.templates)
                        {
                            templates.Add(t);
                        }
                    }
                }
                else
                {
                    if (obj is IEnumerable<KeyValuePair<string, object>> dictionary)
                    {
                        foreach (var kvp in dictionary)
                        {
                            Add(kvp.Key, kvp.Value, null, null, null);
                        }
                    }
                    else
                    {
                        templates ??= new List<object>();
                        templates.Add(obj);
                    }
                }
            }
        }

        /// <summary>
        /// Add a parameter to this dynamic parameter list.
        /// </summary>
        /// <param name="name">The name of the parameter.</param>
        /// <param name="value">The value of the parameter.</param>
        /// <param name="dbType">The type of the parameter.</param>
        /// <param name="direction">The in or out direction of the parameter.</param>
        /// <param name="size">The size of the parameter.</param>
        public void Add(string name, object? value, DbType? dbType, ParameterDirection? direction, int? size)
        {
            parameters[Clean(name)] = new ParamInfo
            {
                Name = name,
                Value = value,
                ParameterDirection = direction ?? ParameterDirection.Input,
                DbType = dbType,
                Size = size
            };
        }

        /// <summary>
        /// Add a parameter to this dynamic parameter list.
        /// </summary>
        /// <param name="name">The name of the parameter.</param>
        /// <param name="value">The value of the parameter.</param>
        /// <param name="dbType">The type of the parameter.</param>
        /// <param name="direction">The in or out direction of the parameter.</param>
        /// <param name="size">The size of the parameter.</param>
        /// <param name="precision">The precision of the parameter.</param>
        /// <param name="scale">The scale of the parameter.</param>
        public void Add(string name, object? value = null, DbType? dbType = null, ParameterDirection? direction = null, int? size = null, byte? precision = null, byte? scale = null)
        {
            parameters[Clean(name)] = new ParamInfo
            {
                Name = name,
                Value = value,
                ParameterDirection = direction ?? ParameterDirection.Input,
                DbType = dbType,
                Size = size,
                Precision = precision,
                Scale = scale
            };
        }

        private static string Clean(string name)
        {
            if (!string.IsNullOrEmpty(name))
            {
                switch (name[0])
                {
                    case '@':
                    case ':':
                    case '?':
                        return name.Substring(1);
                }
            }
            return name;
        }

        void SqlMapper.IDynamicParameters.AddParameters(IDbCommand command, SqlMapper.Identity identity)
        {
            AddParameters(command, identity);
        }

        /// <summary>
        /// If true, the command-text is inspected and only values that are clearly used are included on the connection
        /// </summary>
        public bool RemoveUnused { get; set; }

        internal static bool ShouldSetDbType(DbType? dbType)
            => dbType.HasValue && dbType.GetValueOrDefault() != EnumerableMultiParameter;

        internal static bool ShouldSetDbType(DbType dbType)
            => dbType != EnumerableMultiParameter; // just in case called with non-nullable

        /// <summary>
        /// Add all the parameters needed to the command just before it executes
        /// </summary>
        /// <param name="command">The raw command prior to execution</param>
        /// <param name="identity">Information about the query</param>
        protected void AddParameters(IDbCommand command, SqlMapper.Identity identity)
        {
            var literals = SqlMapper.GetLiteralTokens(identity.Sql);

            if (templates is not null)
            {
                foreach (var template in templates)
                {
                    var newIdent = identity.ForDynamicParameters(template.GetType());
                    Action<IDbCommand, object> appender;

                    lock (paramReaderCache)
                    {
                        if (!paramReaderCache.TryGetValue(newIdent, out appender!))
                        {
                            appender = SqlMapper.CreateParamInfoGenerator(newIdent, true, RemoveUnused, literals);
                            paramReaderCache[newIdent] = appender;
                        }
                    }

                    appender(command, template);
                }

                // The parameters were added to the command, but not the
                // DynamicParameters until now.
                foreach (IDbDataParameter param in command.Parameters)
                {
                    // If someone makes a DynamicParameters with a template,
                    // then explicitly adds a parameter of a matching name,
                    // it will already exist in 'parameters'.
                    if (!parameters.ContainsKey(param.ParameterName))
                    {
                        parameters.Add(param.ParameterName, new ParamInfo
                        {
                            AttachedParam = param,
                            CameFromTemplate = true,
                            DbType = param.DbType,
                            Name = param.ParameterName,
                            ParameterDirection = param.Direction,
                            Size = param.Size,
                            Value = param.Value
                        });
                    }
                }

                // Now that the parameters are added to the command, let's place our output callbacks
                var tmp = outputCallbacks;
                if (tmp is not null)
                {
                    foreach (var generator in tmp)
                    {
                        generator();
                    }
                }
            }

            foreach (var param in parameters.Values)
            {
                if (param.CameFromTemplate) continue;

                var dbType = param.DbType;
                var val = param.Value;
                string name = Clean(param.Name);
                var isCustomQueryParameter = val is SqlMapper.ICustomQueryParameter;

                SqlMapper.ITypeHandler? handler = null;
                if (dbType is null && val is not null && !isCustomQueryParameter)
                {
#pragma warning disable 618
                    dbType = SqlMapper.LookupDbType(val.GetType(), name, true, out handler);
#pragma warning disable 618
                }
                if (isCustomQueryParameter)
                {
                    ((SqlMapper.ICustomQueryParameter)val!).AddParameter(command, name);
                }
                else if (dbType == EnumerableMultiParameter)
                {
#pragma warning disable 612, 618
                    SqlMapper.PackListParameters(command, name, val);
#pragma warning restore 612, 618
                }
                else
                {
                    bool add = !command.Parameters.Contains(name);
                    IDbDataParameter p;
                    if (add)
                    {
                        p = command.CreateParameter();
                        p.ParameterName = name;
                    }
                    else
                    {
                        p = (IDbDataParameter)command.Parameters[name];
                    }

                    p.Direction = param.ParameterDirection;
                    if (handler is null)
                    {
#pragma warning disable 0618
                        p.Value = SqlMapper.SanitizeParameterValue(val);
#pragma warning restore 0618
                        if (ShouldSetDbType(dbType) && p.DbType != dbType.GetValueOrDefault())
                        {
                            p.DbType = dbType.GetValueOrDefault();
                        }
                        var s = val as string;
                        if (s?.Length <= DbString.DefaultLength)
                        {
                            p.Size = DbString.DefaultLength;
                        }
                        if (param.Size is not null) p.Size = param.Size.Value;
                        if (param.Precision is not null) p.Precision = param.Precision.Value;
                        if (param.Scale is not null) p.Scale = param.Scale.Value;
                    }
                    else
                    {
                        if (ShouldSetDbType(dbType)) p.DbType = dbType.GetValueOrDefault();
                        if (param.Size is not null) p.Size = param.Size.Value;
                        if (param.Precision is not null) p.Precision = param.Precision.Value;
                        if (param.Scale is not null) p.Scale = param.Scale.Value;
                        handler.SetValue(p, val ?? DBNull.Value);
                    }

                    if (add)
                    {
                        command.Parameters.Add(p);
                    }
                    param.AttachedParam = p;
                }
            }

            // note: most non-privileged implementations would use: this.ReplaceLiterals(command);
            if (literals.Count != 0) SqlMapper.ReplaceLiterals(this, command, literals);
        }

        /// <summary>
        /// All the names of the param in the bag, use Get to yank them out
        /// </summary>
        public IEnumerable<string> ParameterNames => parameters.Select(p => p.Key);

        /// <summary>
        /// Get the value of a parameter
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="name"></param>
        /// <returns>The value, note DBNull.Value is not returned, instead the value is returned as null</returns>
        public T Get<T>(string name)
        {
            var paramInfo = parameters[Clean(name)];
            var attachedParam = paramInfo.AttachedParam;
            object? val = attachedParam is null ? paramInfo.Value : attachedParam.Value;
            if (val == DBNull.Value)
            {
                if (default(T) is not null)
                {
                    throw new ApplicationException("Attempting to cast a DBNull to a non nullable type! Note that out/return parameters will not have updated values until the data stream completes (after the 'foreach' for Query(..., buffered: false), or after the GridReader has been disposed for QueryMultiple)");
                }
                return default!;
            }
            return (T)val!;
        }

        /// <summary>
        /// Allows you to automatically populate a target property/field from output parameters. It actually
        /// creates an InputOutput parameter, so you can still pass data in.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="target">The object whose property/field you wish to populate.</param>
        /// <param name="expression">A MemberExpression targeting a property/field of the target (or descendant thereof.)</param>
        /// <param name="dbType"></param>
        /// <param name="size">The size to set on the parameter. Defaults to 0, or DbString.DefaultLength in case of strings.</param>
        /// <returns>The DynamicParameters instance</returns>
        public DynamicParameters Output<T>(T target, Expression<Func<T, object?>> expression, DbType? dbType = null, int? size = null)
        {
            static void ThrowInvalidChain()
                => throw new InvalidOperationException($"Expression must be a property/field chain off of a(n) {typeof(T).Name} instance");

            // Is it even a MemberExpression?
#pragma warning disable IDE0019 // Use pattern matching - already complex enough
            var lastMemberAccess = expression.Body as MemberExpression;
#pragma warning restore IDE0019 // Use pattern matching

            if (lastMemberAccess is null
                || (!(lastMemberAccess.Member is PropertyInfo)
                    && !(lastMemberAccess.Member is FieldInfo)))
            {
                if (expression.Body.NodeType == ExpressionType.Convert
                    && expression.Body.Type == typeof(object)
                    && ((UnaryExpression)expression.Body).Operand is MemberExpression member)
                {
                    // It's got to be unboxed
                    lastMemberAccess = member;
                }
                else
                {
                    ThrowInvalidChain();
                }
            }

            // Does the chain consist of MemberExpressions leading to a ParameterExpression of type T?
            MemberExpression? diving = lastMemberAccess;
            // Retain a list of member names and the member expressions so we can rebuild the chain.
            List<string?> names = new List<string?>();
            List<MemberExpression?> chain = new List<MemberExpression?>();

            do
            {
                // Insert the names in the right order so expression
                // "Post.Author.Name" becomes parameter "PostAuthorName"
                names.Insert(0, diving?.Member.Name);
                chain.Insert(0, diving);

#pragma warning disable IDE0019 // use pattern matching; this is fine!
                var constant = diving?.Expression as ParameterExpression;
                diving = diving?.Expression as MemberExpression;
#pragma warning restore IDE0019 // use pattern matching

                if (constant is not null && constant.Type == typeof(T))
                {
                    break;
                }
                else if (diving is null
                    || (!(diving.Member is PropertyInfo)
                        && !(diving.Member is FieldInfo)))
                {
                    ThrowInvalidChain();
                }
            }
            while (diving is not null);

            var dynamicParamName = string.Concat(names.ToArray());

            // Before we get all emitty...
            var lookup = string.Join("|", names.ToArray());

            var cache = CachedOutputSetters<T>.Cache;
            var setter = (Action<object, DynamicParameters>?)cache[lookup];
            if (setter is not null) goto MAKECALLBACK;

            // Come on let's build a method, let's build it, let's build it now!
            var dm = new DynamicMethod("ExpressionParam" + Guid.NewGuid().ToString(), null, new[] { typeof(object), GetType() }, true);
            var il = dm.GetILGenerator();

            il.Emit(OpCodes.Ldarg_0); // [object]
            il.Emit(OpCodes.Castclass, typeof(T));    // [T]

            // Count - 1 to skip the last member access
            for (var i = 0; i < chain.Count - 1; i++)
            {
                var member = chain[i]?.Member;

                if (member is PropertyInfo info)
                {
                    var get = info.GetGetMethod(true);
                    il.Emit(OpCodes.Callvirt, get!); // [Member{i}]
                }
                else // Else it must be a field!
                {
                    il.Emit(OpCodes.Ldfld, (FieldInfo)member!); // [Member{i}]
                }
            }

            var paramGetter = GetType().GetMethod("Get", new Type[] { typeof(string) })!.MakeGenericMethod(lastMemberAccess!.Type);

            il.Emit(OpCodes.Ldarg_1); // [target] [DynamicParameters]
            il.Emit(OpCodes.Ldstr, dynamicParamName); // [target] [DynamicParameters] [ParamName]
            il.Emit(OpCodes.Callvirt, paramGetter); // [target] [value], it's already typed thanks to generic method

            // GET READY
            var lastMember = lastMemberAccess.Member;
            if (lastMember is PropertyInfo property)
            {
                var set = property.GetSetMethod(true);
                il.Emit(OpCodes.Callvirt, set!); // SET
            }
            else
            {
                il.Emit(OpCodes.Stfld, (FieldInfo)lastMember); // SET
            }

            il.Emit(OpCodes.Ret); // GO

            setter = (Action<object, DynamicParameters>)dm.CreateDelegate(typeof(Action<object, DynamicParameters>));
            lock (cache)
            {
                cache[lookup] = setter;
            }

        // Queue the preparation to be fired off when adding parameters to the DbCommand
        MAKECALLBACK:
            (outputCallbacks ??= new List<Action>()).Add(() =>
            {
                // Finally, prep the parameter and attach the callback to it
                var targetMemberType = lastMemberAccess?.Type;
                int sizeToSet = (!size.HasValue && targetMemberType == typeof(string)) ? DbString.DefaultLength : size ?? 0;

                if (parameters.TryGetValue(dynamicParamName, out ParamInfo? parameter))
                {
                    parameter.ParameterDirection = parameter.AttachedParam.Direction = ParameterDirection.InputOutput;

                    if (parameter.AttachedParam.Size == 0)
                    {
                        parameter.Size = parameter.AttachedParam.Size = sizeToSet;
                    }
                }
                else
                {
                    // CameFromTemplate property would not apply here because this new param
                    // Still needs to be added to the command
                    Add(dynamicParamName, expression.Compile().Invoke(target), dbType, ParameterDirection.InputOutput, sizeToSet);
                }

                parameter = parameters[dynamicParamName];
                parameter.OutputCallback = setter;
                parameter.OutputTarget = target!;
            });

            return this;
        }

        private List<Action>? outputCallbacks;

        void SqlMapper.IParameterCallbacks.OnCompleted()
        {
            foreach (var param in from p in parameters select p.Value)
            {
                param.OutputCallback?.Invoke(param.OutputTarget, this);
            }
        }
    }
}


================================================
FILE: Dapper/ExplicitConstructorAttribute.cs
================================================
using System;

namespace Dapper
{
    /// <summary>
    /// Tell Dapper to use an explicit constructor, passing nulls or 0s for all parameters
    /// </summary>
    /// <remarks>
    /// Usage on methods is limited to the usage with Dapper.AOT (https://github.com/DapperLib/DapperAOT)
    /// </remarks>
    [AttributeUsage(AttributeTargets.Constructor | AttributeTargets.Method, AllowMultiple = false)]
    public sealed class ExplicitConstructorAttribute : Attribute
    {
    }
}


================================================
FILE: Dapper/Extensions.cs
================================================
using System;
using System.Threading.Tasks;

namespace Dapper
{
    internal static class Extensions
    {
        /// <summary>
        /// Creates a <see cref="Task{TResult}"/> with a less specific generic parameter that perfectly mirrors the
        /// state of the specified <paramref name="task"/>.
        /// </summary>
        internal static Task<TTo> CastResult<TFrom, TTo>(this Task<TFrom> task)
            where TFrom : TTo
        {
            if (task is null) throw new ArgumentNullException(nameof(task));

            if (task.Status == TaskStatus.RanToCompletion)
                return Task.FromResult((TTo)task.Result);

            var source = new TaskCompletionSource<TTo>();
            task.ContinueWith(OnTaskCompleted<TFrom, TTo>, state: source, TaskContinuationOptions.ExecuteSynchronously);
            return source.Task;
        }

        private static void OnTaskCompleted<TFrom, TTo>(Task<TFrom> completedTask, object? state)
            where TFrom : TTo
        {
            var source = (TaskCompletionSource<TTo>)state!;

            switch (completedTask.Status)
            {
                case TaskStatus.RanToCompletion:
                    source.SetResult(completedTask.Result);
                    break;
                case TaskStatus.Canceled:
                    source.SetCanceled();
                    break;
                case TaskStatus.Faulted:
                    source.SetException(completedTask.Exception!.InnerExceptions);
                    break;
            }
        }
    }
}


================================================
FILE: Dapper/FeatureSupport.cs
================================================
using System;
using System.Data;

namespace Dapper
{
    /// <summary>
    /// Handles variances in features per DBMS
    /// </summary>
    internal class FeatureSupport
    {
        private static readonly FeatureSupport
            Default = new FeatureSupport(false),
            Postgres = new FeatureSupport(true),
            ClickHouse = new FeatureSupport(true);

        /// <summary>
        /// Gets the feature set based on the passed connection
        /// </summary>
        /// <param name="connection">The connection to get supported features for.</param>
        public static FeatureSupport Get(IDbConnection? connection)
        {
            string? name = connection?.GetType().Name;
            if (string.Equals(name, "npgsqlconnection", StringComparison.OrdinalIgnoreCase)) return Postgres;
            if (string.Equals(name, "clickhouseconnection", StringComparison.OrdinalIgnoreCase)) return ClickHouse;
            return Default;
        }

        private FeatureSupport(bool arrays)
        {
            Arrays = arrays;
        }

        /// <summary>
        /// True if the db supports array columns e.g. Postgresql
        /// </summary>
        public bool Arrays { get; }
    }
}


================================================
FILE: Dapper/Global.cs
================================================
using System.Runtime.CompilerServices;
#if !STRONG_NAME
[assembly: InternalsVisibleTo("Dapper.Tests")]
#endif


================================================
FILE: Dapper/NRT.cs
================================================
#if !NET5_0_OR_GREATER
namespace System.Diagnostics.CodeAnalysis
{
    [AttributeUsage(AttributeTargets.Parameter, Inherited = false)]
    internal sealed class NotNullWhenAttribute : Attribute
    {
        public NotNullWhenAttribute(bool returnValue) => ReturnValue = returnValue;

        public bool ReturnValue { get; }
    }
}
#endif


================================================
FILE: Dapper/Properties/AssemblyInfo.cs
================================================
[module: System.Runtime.CompilerServices.SkipLocalsInit]

#if !NET5_0_OR_GREATER
namespace System.Runtime.CompilerServices
{
    [AttributeUsage(AttributeTargets.Module | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Event | AttributeTargets.Interface, Inherited = false)]
    internal sealed class SkipLocalsInitAttribute : Attribute {}
}
namespace System.Diagnostics.CodeAnalysis
{
    [AttributeUsage(AttributeTargets.Method | AttributeTargets.Property, Inherited = false, AllowMultiple = true)]
    internal sealed class MemberNotNullAttribute : Attribute
    {
        public MemberNotNullAttribute(string member) {}
        public MemberNotNullAttribute(params string[] members) {}
    }
}

#endif


================================================
FILE: Dapper/PublicAPI/net461/PublicAPI.Shipped.txt
================================================
#nullable enable

================================================
FILE: Dapper/PublicAPI/net461/PublicAPI.Unshipped.txt
================================================
#nullable enable

================================================
FILE: Dapper/PublicAPI/net8.0/PublicAPI.Shipped.txt
================================================
#nullable enable


================================================
FILE: Dapper/PublicAPI/net8.0/PublicAPI.Unshipped.txt
================================================
#nullable enable

================================================
FILE: Dapper/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt
================================================
#nullable enable

================================================
FILE: Dapper/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt
================================================
#nullable enable

================================================
FILE: Dapper/PublicAPI.Shipped.txt
================================================
#nullable enable
abstract Dapper.SqlMapper.StringTypeHandler<T>.Format(T xml) -> string!
abstract Dapper.SqlMapper.StringTypeHandler<T>.Parse(string! xml) -> T
abstract Dapper.SqlMapper.TypeHandler<T>.Parse(object! value) -> T?
abstract Dapper.SqlMapper.TypeHandler<T>.SetValue(System.Data.IDbDataParameter! parameter, T? value) -> void
const Dapper.DbString.DefaultLength = 4000 -> int
Dapper.CommandDefinition
Dapper.CommandDefinition.Buffered.get -> bool
Dapper.CommandDefinition.CancellationToken.get -> System.Threading.CancellationToken
Dapper.CommandDefinition.CommandDefinition() -> void
Dapper.CommandDefinition.CommandDefinition(string! commandText, object? parameters = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null, Dapper.CommandFlags flags = Dapper.CommandFlags.Buffered, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> void
Dapper.CommandDefinition.CommandText.get -> string!
Dapper.CommandDefinition.CommandTimeout.get -> int?
Dapper.CommandDefinition.CommandType.get -> System.Data.CommandType?
Dapper.CommandDefinition.Flags.get -> Dapper.CommandFlags
Dapper.CommandDefinition.Parameters.get -> object?
Dapper.CommandDefinition.Pipelined.get -> bool
Dapper.CommandDefinition.Transaction.get -> System.Data.IDbTransaction?
Dapper.CommandFlags
Dapper.CommandFlags.Buffered = 1 -> Dapper.CommandFlags
Dapper.CommandFlags.NoCache = 4 -> Dapper.CommandFlags
Dapper.CommandFlags.None = 0 -> Dapper.CommandFlags
Dapper.CommandFlags.Pipelined = 2 -> Dapper.CommandFlags
Dapper.CustomPropertyTypeMap
Dapper.CustomPropertyTypeMap.CustomPropertyTypeMap(System.Type! type, System.Func<System.Type!, string!, System.Reflection.PropertyInfo!>! propertySelector) -> void
Dapper.CustomPropertyTypeMap.FindConstructor(string![]! names, System.Type![]! types) -> System.Reflection.ConstructorInfo?
Dapper.CustomPropertyTypeMap.FindExplicitConstructor() -> System.Reflection.ConstructorInfo?
Dapper.CustomPropertyTypeMap.GetConstructorParameter(System.Reflection.ConstructorInfo! constructor, string! columnName) -> Dapper.SqlMapper.IMemberMap!
Dapper.CustomPropertyTypeMap.GetMember(string! columnName) -> Dapper.SqlMapper.IMemberMap?
Dapper.DbString
Dapper.DbString.AddParameter(System.Data.IDbCommand! command, string! name) -> void
Dapper.DbString.DbString() -> void
Dapper.DbString.DbString(string? value, int length = -1) -> void
Dapper.DbString.IsAnsi.get -> bool
Dapper.DbString.IsAnsi.set -> void
Dapper.DbString.IsFixedLength.get -> bool
Dapper.DbString.IsFixedLength.set -> void
Dapper.DbString.Length.get -> int
Dapper.DbString.Length.set -> void
Dapper.DbString.Value.get -> string?
Dapper.DbString.Value.set -> void
Dapper.DefaultTypeMap
Dapper.DefaultTypeMap.DefaultTypeMap(System.Type! type) -> void
Dapper.DefaultTypeMap.FindConstructor(string![]! names, System.Type![]! types) -> System.Reflection.ConstructorInfo?
Dapper.DefaultTypeMap.FindExplicitConstructor() -> System.Reflection.ConstructorInfo?
Dapper.DefaultTypeMap.GetConstructorParameter(System.Reflection.ConstructorInfo! constructor, string! columnName) -> Dapper.SqlMapper.IMemberMap!
Dapper.DefaultTypeMap.GetMember(string! columnName) -> Dapper.SqlMapper.IMemberMap?
Dapper.DefaultTypeMap.Properties.get -> System.Collections.Generic.List<System.Reflection.PropertyInfo!>!
Dapper.DynamicParameters
Dapper.DynamicParameters.Add(string! name, object? value = null, System.Data.DbType? dbType = null, System.Data.ParameterDirection? direction = null, int? size = null, byte? precision = null, byte? scale = null) -> void
Dapper.DynamicParameters.Add(string! name, object? value, System.Data.DbType? dbType, System.Data.ParameterDirection? direction, int? size) -> void
Dapper.DynamicParameters.AddDynamicParams(object? param) -> void
Dapper.DynamicParameters.AddParameters(System.Data.IDbCommand! command, Dapper.SqlMapper.Identity! identity) -> void
Dapper.DynamicParameters.DynamicParameters() -> void
Dapper.DynamicParameters.DynamicParameters(object? template) -> void
Dapper.DynamicParameters.Get<T>(string! name) -> T
Dapper.DynamicParameters.Output<T>(T target, System.Linq.Expressions.Expression<System.Func<T, object?>!>! expression, System.Data.DbType? dbType = null, int? size = null) -> Dapper.DynamicParameters!
Dapper.DynamicParameters.ParameterNames.get -> System.Collections.Generic.IEnumerable<string!>!
Dapper.DynamicParameters.RemoveUnused.get -> bool
Dapper.DynamicParameters.RemoveUnused.set -> void
Dapper.ExplicitConstructorAttribute
Dapper.ExplicitConstructorAttribute.ExplicitConstructorAttribute() -> void
Dapper.IWrappedDataReader
Dapper.IWrappedDataReader.Command.get -> System.Data.IDbCommand!
Dapper.IWrappedDataReader.Reader.get -> System.Data.IDataReader!
Dapper.SqlMapper
Dapper.SqlMapper.GridReader
Dapper.SqlMapper.GridReader.CancellationToken.get -> System.Threading.CancellationToken
Dapper.SqlMapper.GridReader.Command.get -> System.Data.IDbCommand!
Dapper.SqlMapper.GridReader.Command.set -> void
Dapper.SqlMapper.GridReader.Dispose() -> void
Dapper.SqlMapper.GridReader.DisposeAsync() -> System.Threading.Tasks.ValueTask
Dapper.SqlMapper.GridReader.GridReader(System.Data.IDbCommand! command, System.Data.Common.DbDataReader! reader, Dapper.SqlMapper.Identity? identity, System.Action<object?>? onCompleted = null, object? state = null, bool addToCache = false, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken)) -> void
Dapper.SqlMapper.GridReader.IsConsumed.get -> bool
Dapper.SqlMapper.GridReader.OnAfterGrid(int index) -> void
Dapper.SqlMapper.GridReader.OnAfterGridAsync(int index) -> System.Threading.Tasks.Task!
Dapper.SqlMapper.GridReader.OnBeforeGrid() -> int
Dapper.SqlMapper.GridReader.Read(bool buffered = true) -> System.Collections.Generic.IEnumerable<dynamic!>!
Dapper.SqlMapper.GridReader.Read(System.Type! type, bool buffered = true) -> System.Collections.Generic.IEnumerable<object!>!
Dapper.SqlMapper.GridReader.Read<T>(bool buffered = true) -> System.Collections.Generic.IEnumerable<T>!
Dapper.SqlMapper.GridReader.Read<TFirst, TSecond, TReturn>(System.Func<TFirst, TSecond, TReturn>! func, string! splitOn = "id", bool buffered = true) -> System.Collections.Generic.IEnumerable<TReturn>!
Dapper.SqlMapper.GridReader.Read<TFirst, TSecond, TThird, TFourth, TFifth, TReturn>(System.Func<TFirst, TSecond, TThird, TFourth, TFifth, TReturn>! func, string! splitOn = "id", bool buffered = true) -> System.Collections.Generic.IEnumerable<TReturn>!
Dapper.SqlMapper.GridReader.Read<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TReturn>(System.Func<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TReturn>! func, string! splitOn = "id", bool buffered = true) -> System.Collections.Generic.IEnumerable<TReturn>!
Dapper.SqlMapper.GridReader.Read<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TReturn>(System.Func<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TReturn>! func, string! splitOn = "id", bool buffered = true) -> System.Collections.Generic.IEnumerable<TReturn>!
Dapper.SqlMapper.GridReader.Read<TFirst, TSecond, TThird, TFourth, TReturn>(System.Func<TFirst, TSecond, TThird, TFourth, TReturn>! func, string! splitOn = "id", bool buffered = true) -> System.Collections.Generic.IEnumerable<TReturn>!
Dapper.SqlMapper.GridReader.Read<TFirst, TSecond, TThird, TReturn>(System.Func<TFirst, TSecond, TThird, TReturn>! func, string! splitOn = "id", bool buffered = true) -> System.Collections.Generic.IEnumerable<TReturn>!
Dapper.SqlMapper.GridReader.Read<TReturn>(System.Type![]! types, System.Func<object![]!, TReturn>! map, string! splitOn = "id", bool buffered = true) -> System.Collections.Generic.IEnumerable<TReturn>!
Dapper.SqlMapper.GridReader.ReadAsync(bool buffered = true) -> System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<dynamic!>!>!
Dapper.SqlMapper.GridReader.ReadAsync(System.Type! type, bool buffered = true) -> System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<object!>!>!
Dapper.SqlMapper.GridReader.ReadAsync<T>(bool buffered = true) -> System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<T>!>!
Dapper.SqlMapper.GridReader.Reader.get -> System.Data.Common.DbDataReader!
Dapper.SqlMapper.GridReader.ReadFirst() -> dynamic!
Dapper.SqlMapper.GridReader.ReadFirst(System.Type! type) -> object!
Dapper.SqlMapper.GridReader.ReadFirst<T>() -> T
Dapper.SqlMapper.GridReader.ReadFirstAsync() -> System.Threading.Tasks.Task<dynamic!>!
Dapper.SqlMapper.GridReader.ReadFirstAsync(System.Type! type) -> System.Threading.Tasks.Task<object!>!
Dapper.SqlMapper.GridReader.ReadFirstAsync<T>() -> System.Threading.Tasks.Task<T>!
Dapper.SqlMapper.GridReader.ReadFirstOrDefault() -> dynamic?
Dapper.SqlMapper.GridReader.ReadFirstOrDefault(System.Type! type) -> object?
Dapper.SqlMapper.GridReader.ReadFirstOrDefault<T>() -> T?
Dapper.SqlMapper.GridReader.ReadFirstOrDefaultAsync() -> System.Threading.Tasks.Task<dynamic?>!
Dapper.SqlMapper.GridReader.ReadFirstOrDefaultAsync(System.Type! type) -> System.Threading.Tasks.Task<object?>!
Dapper.SqlMapper.GridReader.ReadFirstOrDefaultAsync<T>() -> System.Threading.Tasks.Task<T?>!
Dapper.SqlMapper.GridReader.ReadSingle() -> dynamic!
Dapper.SqlMapper.GridReader.ReadSingle(System.Type! type) -> object!
Dapper.SqlMapper.GridReader.ReadSingle<T>() -> T
Dapper.SqlMapper.GridReader.ReadSingleAsync() -> System.Threading.Tasks.Task<dynamic!>!
Dapper.SqlMapper.GridReader.ReadSingleAsync(System.Type! type) -> System.Threading.Tasks.Task<object!>!
Dapper.SqlMapper.GridReader.ReadSingleAsync<T>() -> System.Threading.Tasks.Task<T>!
Dapper.SqlMapper.GridReader.ReadSingleOrDefault() -> dynamic?
Dapper.SqlMapper.GridReader.ReadSingleOrDefault(System.Type! type) -> object?
Dapper.SqlMapper.GridReader.ReadSingleOrDefault<T>() -> T?
Dapper.SqlMapper.GridReader.ReadSingleOrDefaultAsync() -> System.Threading.Tasks.Task<dynamic?>!
Dapper.SqlMapper.GridReader.ReadSingleOrDefaultAsync(System.Type! type) -> System.Threading.Tasks.Task<object?>!
Dapper.SqlMapper.GridReader.ReadSingleOrDefaultAsync<T>() -> System.Threading.Tasks.Task<T?>!
Dapper.SqlMapper.GridReader.ReadUnbufferedAsync() -> System.Collections.Generic.IAsyncEnumerable<dynamic!>!
Dapper.SqlMapper.GridReader.ReadUnbufferedAsync<T>() -> System.Collections.Generic.IAsyncEnumerable<T>!
Dapper.SqlMapper.GridReader.ResultIndex.get -> int
Dapper.SqlMapper.ICustomQueryParameter
Dapper.SqlMapper.ICustomQueryParameter.AddParameter(System.Data.IDbCommand! command, string! name) -> void
Dapper.SqlMapper.Identity
Dapper.SqlMapper.Identity.Equals(Dapper.SqlMapper.Identity? other) -> bool
Dapper.SqlMapper.Identity.ForDynamicParameters(System.Type! type) -> Dapper.SqlMapper.Identity!
Dapper.SqlMapper.IDynamicParameters
Dapper.SqlMapper.IDynamicParameters.AddParameters(System.Data.IDbCommand! command, Dapper.SqlMapper.Identity! identity) -> void
Dapper.SqlMapper.IMemberMap
Dapper.SqlMapper.IMemberMap.ColumnName.get -> string!
Dapper.SqlMapper.IMemberMap.Field.get -> System.Reflection.FieldInfo?
Dapper.SqlMapper.IMemberMap.MemberType.get -> System.Type!
Dapper.SqlMapper.IMemberMap.Parameter.get -> System.Reflection.ParameterInfo?
Dapper.SqlMapper.IMemberMap.Property.get -> System.Reflection.PropertyInfo?
Dapper.SqlMapper.IParameterCallbacks
Dapper.SqlMapper.IParameterCallbacks.OnCompleted() -> void
Dapper.SqlMapper.IParameterLookup
Dapper.SqlMapper.IParameterLookup.this[string! name].get -> object?
Dapper.SqlMapper.ITypeHandler
Dapper.SqlMapper.ITypeHandler.Parse(System.Type! destinationType, object! value) -> object?
Dapper.SqlMapper.ITypeHandler.SetValue(System.Data.IDbDataParameter! parameter, object! value) -> void
Dapper.SqlMapper.ITypeMap
Dapper.SqlMapper.ITypeMap.FindConstructor(string![]! names, System.Type![]! types) -> System.Reflection.ConstructorInfo?
Dapper.SqlMapper.ITypeMap.FindExplicitConstructor() -> System.Reflection.ConstructorInfo?
Dapper.SqlMapper.ITypeMap.GetConstructorParameter(System.Reflection.ConstructorInfo! constructor, string! columnName) -> Dapper.SqlMapper.IMemberMap?
Dapper.SqlMapper.ITypeMap.GetMember(string! columnName) -> Dapper.SqlMapper.IMemberMap?
Dapper.SqlMapper.Settings
Dapper.SqlMapper.StringTypeHandler<T>
Dapper.SqlMapper.StringTypeHandler<T>.StringTypeHandler() -> void
Dapper.SqlMapper.TypeHandler<T>
Dapper.SqlMapper.TypeHandler<T>.TypeHandler() -> void
Dapper.SqlMapper.TypeHandlerCache<T>
Dapper.SqlMapper.UdtTypeHandler
Dapper.SqlMapper.UdtTypeHandler.UdtTypeHandler(string! udtTypeName) -> void
override Dapper.DbString.ToString() -> string!
override Dapper.SqlMapper.Identity.Equals(object? obj) -> bool
override Dapper.SqlMapper.Identity.GetHashCode() -> int
override Dapper.SqlMapper.Identity.ToString() -> string!
override Dapper.SqlMapper.StringTypeHandler<T>.Parse(object! value) -> T
override Dapper.SqlMapper.StringTypeHandler<T>.SetValue(System.Data.IDbDataParameter! parameter, T? value) -> void
readonly Dapper.SqlMapper.Identity.commandType -> System.Data.CommandType?
Dapper.SqlMapper.Identity.CommandType.get -> System.Data.CommandType?
readonly Dapper.SqlMapper.Identity.connectionString -> string!
readonly Dapper.SqlMapper.Identity.gridIndex -> int
Dapper.SqlMapper.Identity.GridIndex.get -> int
readonly Dapper.SqlMapper.Identity.hashCode -> int
readonly Dapper.SqlMapper.Identity.parametersType -> System.Type?
Dapper.SqlMapper.Identity.ParametersType.get -> System.Type?
readonly Dapper.SqlMapper.Identity.sql -> string!
Dapper.SqlMapper.Identity.Sql.get -> string!
readonly Dapper.SqlMapper.Identity.type -> System.Type?
Dapper.SqlMapper.Identity.Type.get -> System.Type?
static Dapper.DbString.IsAnsiDefault.get -> bool
static Dapper.DbString.IsAnsiDefault.set -> void
static Dapper.DefaultTypeMap.MatchNamesWithUnderscores.get -> bool
static Dapper.DefaultTypeMap.MatchNamesWithUnderscores.set -> void
static Dapper.SqlMapper.AddTypeHandler(System.Type! type, Dapper.SqlMapper.ITypeHandler! handler) -> void
static Dapper.SqlMapper.AddTypeHandler<T>(Dapper.SqlMapper.TypeHandler<T>! handler) -> void
static Dapper.SqlMapper.AddTypeHandlerImpl(System.Type! type, Dapper.SqlMapper.ITypeHandler? handler, bool clone) -> void
static Dapper.SqlMapper.AddTypeMap(System.Type! type, System.Data.DbType dbType) -> void
static Dapper.SqlMapper.AddTypeMap(System.Type! type, System.Data.DbType dbType, bool useGetFieldValue) -> void
static Dapper.SqlMapper.AsList<T>(this System.Collections.Generic.IEnumerable<T>? source) -> System.Collections.Generic.List<T>!
static Dapper.SqlMapper.AsTableValuedParameter(this System.Data.DataTable! table, string? typeName = null) -> Dapper.SqlMapper.ICustomQueryParameter!
static Dapper.SqlMapper.AsTableValuedParameter<T>(this System.Collections.Generic.IEnumerable<T>! list, string? typeName = null) -> Dapper.SqlMapper.ICustomQueryParameter!
static Dapper.SqlMapper.ConnectionStringComparer.get -> System.Collections.Generic.IEqualityComparer<string!>!
static Dapper.SqlMapper.ConnectionStringComparer.set -> void
static Dapper.SqlMapper.CreateParamInfoGenerator(Dapper.SqlMapper.Identity! identity, bool checkForDuplicates, bool removeUnused) -> System.Action<System.Data.IDbCommand!, object!>!
static Dapper.SqlMapper.Execute(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command) -> int
static Dapper.SqlMapper.Execute(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> int
static Dapper.SqlMapper.ExecuteAsync(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command) -> System.Threading.Tasks.Task<int>!
static Dapper.SqlMapper.ExecuteAsync(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Threading.Tasks.Task<int>!
static Dapper.SqlMapper.ExecuteReader(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command) -> System.Data.IDataReader!
static Dapper.SqlMapper.ExecuteReader(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command, System.Data.CommandBehavior commandBehavior) -> System.Data.IDataReader!
static Dapper.SqlMapper.ExecuteReader(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Data.IDataReader!
static Dapper.SqlMapper.ExecuteReaderAsync(this System.Data.Common.DbConnection! cnn, Dapper.CommandDefinition command) -> System.Threading.Tasks.Task<System.Data.Common.DbDataReader!>!
static Dapper.SqlMapper.ExecuteReaderAsync(this System.Data.Common.DbConnection! cnn, Dapper.CommandDefinition command, System.Data.CommandBehavior commandBehavior) -> System.Threading.Tasks.Task<System.Data.Common.DbDataReader!>!
static Dapper.SqlMapper.ExecuteReaderAsync(this System.Data.Common.DbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Threading.Tasks.Task<System.Data.Common.DbDataReader!>!
static Dapper.SqlMapper.ExecuteReaderAsync(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command) -> System.Threading.Tasks.Task<System.Data.IDataReader!>!
static Dapper.SqlMapper.ExecuteReaderAsync(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command, System.Data.CommandBehavior commandBehavior) -> System.Threading.Tasks.Task<System.Data.IDataReader!>!
static Dapper.SqlMapper.ExecuteReaderAsync(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Threading.Tasks.Task<System.Data.IDataReader!>!
static Dapper.SqlMapper.ExecuteScalar(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command) -> object?
static Dapper.SqlMapper.ExecuteScalar(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> object?
static Dapper.SqlMapper.ExecuteScalar<T>(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command) -> T?
static Dapper.SqlMapper.ExecuteScalar<T>(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> T?
static Dapper.SqlMapper.ExecuteScalarAsync(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command) -> System.Threading.Tasks.Task<object?>!
static Dapper.SqlMapper.ExecuteScalarAsync(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Threading.Tasks.Task<object?>!
static Dapper.SqlMapper.ExecuteScalarAsync<T>(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command) -> System.Threading.Tasks.Task<T?>!
static Dapper.SqlMapper.ExecuteScalarAsync<T>(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Threading.Tasks.Task<T?>!
static Dapper.SqlMapper.FindOrAddParameter(System.Data.IDataParameterCollection! parameters, System.Data.IDbCommand! command, string! name) -> System.Data.IDbDataParameter!
static Dapper.SqlMapper.Format(object? value) -> string!
static Dapper.SqlMapper.GetCachedSQL(int ignoreHitCountAbove = 2147483647) -> System.Collections.Generic.IEnumerable<System.Tuple<string!, string!, int>!>!
static Dapper.SqlMapper.GetCachedSQLCount() -> int
static Dapper.SqlMapper.GetHashCollissions() -> System.Collections.Generic.IEnumerable<System.Tuple<int, int>!>!
static Dapper.SqlMapper.GetRowParser(this System.Data.Common.DbDataReader! reader, System.Type! type, int startIndex = 0, int length = -1, bool returnNullIfFirstMissing = false) -> System.Func<System.Data.Common.DbDataReader!, object!>!
static Dapper.SqlMapper.GetRowParser(this System.Data.IDataReader! reader, System.Type! type, int startIndex = 0, int length = -1, bool returnNullIfFirstMissing = false) -> System.Func<System.Data.IDataReader!, object!>!
static Dapper.SqlMapper.GetRowParser<T>(this System.Data.Common.DbDataReader! reader, System.Type? concreteType = null, int startIndex = 0, int length = -1, bool returnNullIfFirstMissing = false) -> System.Func<System.Data.Common.DbDataReader!, T>!
static Dapper.SqlMapper.GetRowParser<T>(this System.Data.IDataReader! reader, System.Type? concreteType = null, int startIndex = 0, int length = -1, bool returnNullIfFirstMissing = false) -> System.Func<System.Data.IDataReader!, T>!
static Dapper.SqlMapper.GetTypeDeserializer(System.Type! type, System.Data.Common.DbDataReader! reader, int startBound = 0, int length = -1, bool returnNullIfFirstMissing = false) -> System.Func<System.Data.Common.DbDataReader!, object!>!
static Dapper.SqlMapper.GetTypeDeserializer(System.Type! type, System.Data.IDataReader! reader, int startBound = 0, int length = -1, bool returnNullIfFirstMissing = false) -> System.Func<System.Data.IDataReader!, object!>!
static Dapper.SqlMapper.GetTypeMap(System.Type! type) -> Dapper.SqlMapper.ITypeMap!
static Dapper.SqlMapper.GetTypeName(this System.Data.DataTable! table) -> string?
static Dapper.SqlMapper.HasTypeHandler(System.Type! type) -> bool
static Dapper.SqlMapper.LookupDbType(System.Type! type, string! name, bool demand, out Dapper.SqlMapper.ITypeHandler? handler) -> System.Data.DbType?
static Dapper.SqlMapper.PackListParameters(System.Data.IDbCommand! command, string! namePrefix, object? value) -> void
static Dapper.SqlMapper.Parse(this System.Data.IDataReader! reader) -> System.Collections.Generic.IEnumerable<dynamic!>!
static Dapper.SqlMapper.Parse(this System.Data.IDataReader! reader, System.Type! type) -> System.Collections.Generic.IEnumerable<object!>!
static Dapper.SqlMapper.Parse<T>(this System.Data.IDataReader! reader) -> System.Collections.Generic.IEnumerable<T>!
static Dapper.SqlMapper.PurgeQueryCache() -> void
static Dapper.SqlMapper.Query(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, bool buffered = true, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Collections.Generic.IEnumerable<dynamic!>!
static Dapper.SqlMapper.Query(this System.Data.IDbConnection! cnn, System.Type! type, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, bool buffered = true, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Collections.Generic.IEnumerable<object!>!
static Dapper.SqlMapper.Query<T>(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command) -> System.Collections.Generic.IEnumerable<T>!
static Dapper.SqlMapper.Query<T>(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, bool buffered = true, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Collections.Generic.IEnumerable<T>!
static Dapper.SqlMapper.Query<TFirst, TSecond, TReturn>(this System.Data.IDbConnection! cnn, string! sql, System.Func<TFirst, TSecond, TReturn>! map, object? param = null, System.Data.IDbTransaction? transaction = null, bool buffered = true, string! splitOn = "Id", int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Collections.Generic.IEnumerable<TReturn>!
static Dapper.SqlMapper.Query<TFirst, TSecond, TThird, TFourth, TFifth, TReturn>(this System.Data.IDbConnection! cnn, string! sql, System.Func<TFirst, TSecond, TThird, TFourth, TFifth, TReturn>! map, object? param = null, System.Data.IDbTransaction? transaction = null, bool buffered = true, string! splitOn = "Id", int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Collections.Generic.IEnumerable<TReturn>!
static Dapper.SqlMapper.Query<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TReturn>(this System.Data.IDbConnection! cnn, string! sql, System.Func<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TReturn>! map, object? param = null, System.Data.IDbTransaction? transaction = null, bool buffered = true, string! splitOn = "Id", int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Collections.Generic.IEnumerable<TReturn>!
static Dapper.SqlMapper.Query<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TReturn>(this System.Data.IDbConnection! cnn, string! sql, System.Func<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TReturn>! map, object? param = null, System.Data.IDbTransaction? transaction = null, bool buffered = true, string! splitOn = "Id", int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Collections.Generic.IEnumerable<TReturn>!
static Dapper.SqlMapper.Query<TFirst, TSecond, TThird, TFourth, TReturn>(this System.Data.IDbConnection! cnn, string! sql, System.Func<TFirst, TSecond, TThird, TFourth, TReturn>! map, object? param = null, System.Data.IDbTransaction? transaction = null, bool buffered = true, string! splitOn = "Id", int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Collections.Generic.IEnumerable<TReturn>!
static Dapper.SqlMapper.Query<TFirst, TSecond, TThird, TReturn>(this System.Data.IDbConnection! cnn, string! sql, System.Func<TFirst, TSecond, TThird, TReturn>! map, object? param = null, System.Data.IDbTransaction? transaction = null, bool buffered = true, string! splitOn = "Id", int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Collections.Generic.IEnumerable<TReturn>!
static Dapper.SqlMapper.Query<TReturn>(this System.Data.IDbConnection! cnn, string! sql, System.Type![]! types, System.Func<object![]!, TReturn>! map, object? param = null, System.Data.IDbTransaction? transaction = null, bool buffered = true, string! splitOn = "Id", int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Collections.Generic.IEnumerable<TReturn>!
static Dapper.SqlMapper.QueryAsync(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command) -> System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<dynamic!>!>!
static Dapper.SqlMapper.QueryAsync(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<dynamic!>!>!
static Dapper.SqlMapper.QueryAsync(this System.Data.IDbConnection! cnn, System.Type! type, Dapper.CommandDefinition command) -> System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<object!>!>!
static Dapper.SqlMapper.QueryAsync(this System.Data.IDbConnection! cnn, System.Type! type, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<object!>!>!
static Dapper.SqlMapper.QueryAsync<T>(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command) -> System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<T>!>!
static Dapper.SqlMapper.QueryAsync<T>(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<T>!>!
static Dapper.SqlMapper.QueryAsync<TFirst, TSecond, TReturn>(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command, System.Func<TFirst, TSecond, TReturn>! map, string! splitOn = "Id") -> System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<TReturn>!>!
static Dapper.SqlMapper.QueryAsync<TFirst, TSecond, TReturn>(this System.Data.IDbConnection! cnn, string! sql, System.Func<TFirst, TSecond, TReturn>! map, object? param = null, System.Data.IDbTransaction? transaction = null, bool buffered = true, string! splitOn = "Id", int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<TReturn>!>!
static Dapper.SqlMapper.QueryAsync<TFirst, TSecond, TThird, TFourth, TFifth, TReturn>(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command, System.Func<TFirst, TSecond, TThird, TFourth, TFifth, TReturn>! map, string! splitOn = "Id") -> System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<TReturn>!>!
static Dapper.SqlMapper.QueryAsync<TFirst, TSecond, TThird, TFourth, TFifth, TReturn>(this System.Data.IDbConnection! cnn, string! sql, System.Func<TFirst, TSecond, TThird, TFourth, TFifth, TReturn>! map, object? param = null, System.Data.IDbTransaction? transaction = null, bool buffered = true, string! splitOn = "Id", int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<TReturn>!>!
static Dapper.SqlMapper.QueryAsync<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TReturn>(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command, System.Func<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TReturn>! map, string! splitOn = "Id") -> System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<TReturn>!>!
static Dapper.SqlMapper.QueryAsync<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TReturn>(this System.Data.IDbConnection! cnn, string! sql, System.Func<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TReturn>! map, object? param = null, System.Data.IDbTransaction? transaction = null, bool buffered = true, string! splitOn = "Id", int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<TReturn>!>!
static Dapper.SqlMapper.QueryAsync<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TReturn>(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command, System.Func<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TReturn>! map, string! splitOn = "Id") -> System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<TReturn>!>!
static Dapper.SqlMapper.QueryAsync<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TReturn>(this System.Data.IDbConnection! cnn, string! sql, System.Func<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TReturn>! map, object? param = null, System.Data.IDbTransaction? transaction = null, bool buffered = true, string! splitOn = "Id", int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<TReturn>!>!
static Dapper.SqlMapper.QueryAsync<TFirst, TSecond, TThird, TFourth, TReturn>(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command, System.Func<TFirst, TSecond, TThird, TFourth, TReturn>! map, string! splitOn = "Id") -> System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<TReturn>!>!
static Dapper.SqlMapper.QueryAsync<TFirst, TSecond, TThird, TFourth, TReturn>(this System.Data.IDbConnection! cnn, string! sql, System.Func<TFirst, TSecond, TThird, TFourth, TReturn>! map, object? param = null, System.Data.IDbTransaction? transaction = null, bool buffered = true, string! splitOn = "Id", int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<TReturn>!>!
static Dapper.SqlMapper.QueryAsync<TFirst, TSecond, TThird, TReturn>(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command, System.Func<TFirst, TSecond, TThird, TReturn>! map, string! splitOn = "Id") -> System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<TReturn>!>!
static Dapper.SqlMapper.QueryAsync<TFirst, TSecond, TThird, TReturn>(this System.Data.IDbConnection! cnn, string! sql, System.Func<TFirst, TSecond, TThird, TReturn>! map, object? param = null, System.Data.IDbTransaction? transaction = null, bool buffered = true, string! splitOn = "Id", int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<TReturn>!>!
static Dapper.SqlMapper.QueryAsync<TReturn>(this System.Data.IDbConnection! cnn, string! sql, System.Type![]! types, System.Func<object![]!, TReturn>! map, object? param = null, System.Data.IDbTransaction? transaction = null, bool buffered = true, string! splitOn = "Id", int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable<TReturn>!>!
static Dapper.SqlMapper.QueryCachePurged -> System.EventHandler?
static Dapper.SqlMapper.QueryFirst(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> dynamic!
static Dapper.SqlMapper.QueryFirst(this System.Data.IDbConnection! cnn, System.Type! type, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> object!
static Dapper.SqlMapper.QueryFirst<T>(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command) -> T
static Dapper.SqlMapper.QueryFirst<T>(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> T
static Dapper.SqlMapper.QueryFirstAsync(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command) -> System.Threading.Tasks.Task<dynamic!>!
static Dapper.SqlMapper.QueryFirstAsync(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Threading.Tasks.Task<dynamic!>!
static Dapper.SqlMapper.QueryFirstAsync(this System.Data.IDbConnection! cnn, System.Type! type, Dapper.CommandDefinition command) -> System.Threading.Tasks.Task<object!>!
static Dapper.SqlMapper.QueryFirstAsync(this System.Data.IDbConnection! cnn, System.Type! type, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Threading.Tasks.Task<object!>!
static Dapper.SqlMapper.QueryFirstAsync<T>(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command) -> System.Threading.Tasks.Task<T>!
static Dapper.SqlMapper.QueryFirstAsync<T>(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Threading.Tasks.Task<T>!
static Dapper.SqlMapper.QueryFirstOrDefault(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> dynamic?
static Dapper.SqlMapper.QueryFirstOrDefault(this System.Data.IDbConnection! cnn, System.Type! type, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> object?
static Dapper.SqlMapper.QueryFirstOrDefault<T>(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command) -> T?
static Dapper.SqlMapper.QueryFirstOrDefault<T>(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> T?
static Dapper.SqlMapper.QueryFirstOrDefaultAsync(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command) -> System.Threading.Tasks.Task<dynamic?>!
static Dapper.SqlMapper.QueryFirstOrDefaultAsync(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Threading.Tasks.Task<dynamic?>!
static Dapper.SqlMapper.QueryFirstOrDefaultAsync(this System.Data.IDbConnection! cnn, System.Type! type, Dapper.CommandDefinition command) -> System.Threading.Tasks.Task<object?>!
static Dapper.SqlMapper.QueryFirstOrDefaultAsync(this System.Data.IDbConnection! cnn, System.Type! type, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Threading.Tasks.Task<object?>!
static Dapper.SqlMapper.QueryFirstOrDefaultAsync<T>(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command) -> System.Threading.Tasks.Task<T?>!
static Dapper.SqlMapper.QueryFirstOrDefaultAsync<T>(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Threading.Tasks.Task<T?>!
static Dapper.SqlMapper.QueryMultiple(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command) -> Dapper.SqlMapper.GridReader!
static Dapper.SqlMapper.QueryMultiple(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> Dapper.SqlMapper.GridReader!
static Dapper.SqlMapper.QueryMultipleAsync(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command) -> System.Threading.Tasks.Task<Dapper.SqlMapper.GridReader!>!
static Dapper.SqlMapper.QueryMultipleAsync(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Threading.Tasks.Task<Dapper.SqlMapper.GridReader!>!
static Dapper.SqlMapper.QuerySingle(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> dynamic!
static Dapper.SqlMapper.QuerySingle(this System.Data.IDbConnection! cnn, System.Type! type, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> object!
static Dapper.SqlMapper.QuerySingle<T>(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command) -> T
static Dapper.SqlMapper.QuerySingle<T>(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> T
static Dapper.SqlMapper.QuerySingleAsync(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command) -> System.Threading.Tasks.Task<dynamic!>!
static Dapper.SqlMapper.QuerySingleAsync(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Threading.Tasks.Task<dynamic!>!
static Dapper.SqlMapper.QuerySingleAsync(this System.Data.IDbConnection! cnn, System.Type! type, Dapper.CommandDefinition command) -> System.Threading.Tasks.Task<object!>!
static Dapper.SqlMapper.QuerySingleAsync(this System.Data.IDbConnection! cnn, System.Type! type, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Threading.Tasks.Task<object!>!
static Dapper.SqlMapper.QuerySingleAsync<T>(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command) -> System.Threading.Tasks.Task<T>!
static Dapper.SqlMapper.QuerySingleAsync<T>(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Threading.Tasks.Task<T>!
static Dapper.SqlMapper.QuerySingleOrDefault(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> dynamic?
static Dapper.SqlMapper.QuerySingleOrDefault(this System.Data.IDbConnection! cnn, System.Type! type, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> object?
static Dapper.SqlMapper.QuerySingleOrDefault<T>(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command) -> T?
static Dapper.SqlMapper.QuerySingleOrDefault<T>(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> T?
static Dapper.SqlMapper.QuerySingleOrDefaultAsync(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command) -> System.Threading.Tasks.Task<dynamic?>!
static Dapper.SqlMapper.QuerySingleOrDefaultAsync(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Threading.Tasks.Task<dynamic?>!
static Dapper.SqlMapper.QuerySingleOrDefaultAsync(this System.Data.IDbConnection! cnn, System.Type! type, Dapper.CommandDefinition command) -> System.Threading.Tasks.Task<object?>!
static Dapper.SqlMapper.QuerySingleOrDefaultAsync(this System.Data.IDbConnection! cnn, System.Type! type, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Threading.Tasks.Task<object?>!
static Dapper.SqlMapper.QuerySingleOrDefaultAsync<T>(this System.Data.IDbConnection! cnn, Dapper.CommandDefinition command) -> System.Threading.Tasks.Task<T?>!
static Dapper.SqlMapper.QuerySingleOrDefaultAsync<T>(this System.Data.IDbConnection! cnn, string! sql, object? param = null, System.Data.IDbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Threading.Tasks.Task<T?>!
static Dapper.SqlMapper.QueryUnbufferedAsync(this System.Data.Common.DbConnection! cnn, string! sql, object? param = null, System.Data.Common.DbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Collections.Generic.IAsyncEnumerable<dynamic!>!
static Dapper.SqlMapper.QueryUnbufferedAsync<T>(this System.Data.Common.DbConnection! cnn, string! sql, object? param = null, System.Data.Common.DbTransaction? transaction = null, int? commandTimeout = null, System.Data.CommandType? commandType = null) -> System.Collections.Generic.IAsyncEnumerable<T>!
static Dapper.SqlMapper.ReadChar(object! value) -> char
static Dapper.SqlMapper.ReadNullableChar(object! value) -> char?
static Dapper.SqlMapper.RemoveTypeMap(System.Type! type) -> void
static Dapper.SqlMapper.ReplaceLiterals(this Dapper.SqlMapper.IParameterLookup! parameters, System.Data.IDbCommand! command) -> void
static Dapper.SqlMapper.ResetTypeHandlers() -> void
static Dapper.SqlMapper.SanitizeParameterValue(object? value) -> object!
static Dapper.SqlMapper.SetDbType(System.Data.IDataParameter! parameter, object! value) -> void
static Dapper.SqlMapper.Settings.ApplyNullValues.get -> bool
static Dapper.SqlMapper.Settings.ApplyNullValues.set -> void
static Dapper.SqlMapper.Settings.SupportLegacyParameterTokens.get -> bool
static Dapper.SqlMapper.Settings.SupportLegacyParameterTokens.set -> void
static Dapper.SqlMapper.Settings.CommandTimeout.get -> int?
static Dapper.SqlMapper.Settings.CommandTimeout.set -> void
static Dapper.SqlMapper.Settings.FetchSize.get -> long
static Dapper.SqlMapper.Settings.FetchSize.set -> void
static Dapper.SqlMapper.Settings.InListStringSplitCount.get -> int
static Dapper.SqlMapper.Settings.InListStringSplitCount.set -> void
static Dapper.SqlMapper.Settings.PadListExpansions.get -> bool
static Dapper.SqlMapper.Settings.PadListExpansions.set -> void
static Dapper.SqlMapper.Settings.SetDefaults() -> void
static Dapper.SqlMapper.Settings.UseIncrementalPseudoPositionalParameterNames.get -> bool
static Dapper.SqlMapper.Settings.UseIncrementalPseudoPositionalParameterNames.set -> void
static Dapper.SqlMapper.Settings.UseSingleResultOptimization.get -> bool
static Dapper.SqlMapper.Settings.UseSingleResultOptimization.set -> void
static Dapper.SqlMapper.Settings.UseSingleRowOptimization.get -> bool
static Dapper.SqlMapper.Settings.UseSingleRowOptimization.set -> void
static Dapper.SqlMapper.SetTypeMap(System.Type! type, Dapper.SqlMapper.ITypeMap? map) -> void
static Dapper.SqlMapper.SetTypeName(this System.Data.DataTable! table, string! typeName) -> void
static Dapper.SqlMapper.ThrowDataException(System.Exception! ex, int index, System.Data.IDataReader! reader, object? value) -> void
static Dapper.SqlMapper.ThrowNullCustomQueryParameter(string! name) -> void
static Dapper.SqlMapper.TypeHandlerCache<T>.Parse(object! value) -> T?
static Dapper.SqlMapper.TypeHandlerCache<T>.SetValue(System.Data.IDbDataParameter! parameter, object! value) -> void
static Dapper.SqlMapper.TypeMapProvider -> System.Func<System.Type!, Dapper.SqlMapper.ITypeMap!>!

================================================
FILE: Dapper/PublicAPI.Unshipped.txt
================================================
#nullable enable

================================================
FILE: Dapper/SimpleMemberMap.cs
================================================
using System;
using System.Reflection;

namespace Dapper
{
    /// <summary>
    /// Represents simple member map for one of target parameter or property or field to source DataReader column
    /// </summary>
    internal sealed class SimpleMemberMap : SqlMapper.IMemberMap
    {
        /// <summary>
        /// Creates instance for simple property mapping
        /// </summary>
        /// <param name="columnName">DataReader column name</param>
        /// <param name="property">Target property</param>
        public SimpleMemberMap(string columnName, PropertyInfo property)
        {
            ColumnName = columnName ?? throw new ArgumentNullException(nameof(columnName));
            Property = property ?? throw new ArgumentNullException(nameof(property));
        }

        /// <summary>
        /// Creates instance for simple field mapping
        /// </summary>
        /// <param name="columnName">DataReader column name</param>
        /// <param name="field">Target property</param>
        public SimpleMemberMap(string columnName, FieldInfo field)
        {
            ColumnName = columnName ?? throw new ArgumentNullException(nameof(columnName));
            Field = field ?? throw new ArgumentNullException(nameof(field));
        }

        /// <summary>
        /// Creates instance for simple constructor parameter mapping
        /// </summary>
        /// <param name="columnName">DataReader column name</param>
        /// <param name="parameter">Target constructor parameter</param>
        public SimpleMemberMap(string columnName, ParameterInfo parameter)
        {
            ColumnName = columnName ?? throw new ArgumentNullException(nameof(columnName));
            Parameter = parameter ?? throw new ArgumentNullException(nameof(parameter));
        }

        /// <summary>
        /// DataReader column name
        /// </summary>
        public string ColumnName { get; }

        /// <summary>
        /// Target member type
        /// </summary>
        public Type MemberType => Field?.FieldType ?? Property?.PropertyType ?? Parameter?.ParameterType!;

        /// <summary>
        /// Target property
        /// </summary>
        public PropertyInfo? Property { get; }

        /// <summary>
        /// Target field
        /// </summary>
        public FieldInfo? Field { get; }

        /// <summary>
        /// Target constructor parameter
        /// </summary>
        public ParameterInfo? Parameter { get; }
    }
}


================================================
FILE: Dapper/SqlDataRecordHandler.cs
================================================
using System;
using System.Collections.Generic;
using System.Data;

namespace Dapper
{
    internal sealed class SqlDataRecordHandler<T> : SqlMapper.ITypeHandler
        where T : IDataRecord
    {
        public object Parse(Type destinationType, object value)
        {
            throw new NotSupportedException();
        }

        public void SetValue(IDbDataParameter parameter, object value)
        {
            SqlDataRecordListTVPParameter<T>.Set(parameter, value as IEnumerable<T>, null);
        }
    }
}


================================================
FILE: Dapper/SqlDataRecordListTVPParameter.cs
================================================
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Reflection;
using System.Reflection.Emit;

namespace Dapper
{
    /// <summary>
    /// Used to pass a IEnumerable&lt;SqlDataRecord&gt; as a SqlDataRecordListTVPParameter
    /// </summary>
    internal sealed class SqlDataRecordListTVPParameter<T> : SqlMapper.ICustomQueryParameter
        where T : IDataRecord
    {
        private readonly IEnumerable<T> data;
        private readonly string typeName;
        /// <summary>
        /// Create a new instance of <see cref="SqlDataRecordListTVPParameter&lt;T&gt;"/>.
        /// </summary>
        /// <param name="data">The data records to convert into TVPs.</param>
        /// <param name="typeName">The parameter type name.</param>
        public SqlDataRecordListTVPParameter(IEnumerable<T> data, string typeName)
        {
            this.data = data;
            this.typeName = typeName;
        }

        void SqlMapper.ICustomQueryParameter.AddParameter(IDbCommand command, string name)
        {
            var param = command.CreateParameter();
            param.ParameterName = name;
            Set(param, data, typeName);
            command.Parameters.Add(param);
        }

        internal static void Set(IDbDataParameter parameter, IEnumerable<T>? data, string? typeName)
        {
            parameter.Value = data is not null && data.Any() ? data : null;
            StructuredHelper.ConfigureTVP(parameter, typeName);
        }
    }
    static class StructuredHelper
    {
        private static readonly Hashtable s_udt = new Hashtable(), s_tvp = new Hashtable();

        private static Action<IDbDataParameter, string> GetUDT(Type type)
            => (Action<IDbDataParameter, string?>?)s_udt[type] ?? SlowGetHelper(type, s_udt, "UdtTypeName", 29); // 29 = SqlDbType.Udt (avoiding ref)
        private static Action<IDbDataParameter, string?> GetTVP(Type type)
            => (Action<IDbDataParameter, string?>?)s_tvp[type] ?? SlowGetHelper(type, s_tvp, "TypeName", 30); // 30 = SqlDbType.Structured (avoiding ref)

        static Action<IDbDataParameter, string?> SlowGetHelper(Type type, Hashtable hashtable, string nameProperty, int sqlDbType)
        {
            lock (hashtable)
            {
                var helper = (Action<IDbDataParameter, string?>?)hashtable[type];
                if (helper is null)
                {
                    helper = CreateFor(type, nameProperty, sqlDbType);
                    hashtable.Add(type, helper);
                }
                return helper;
            }
        }

        static Action<IDbDataParameter, string?> CreateFor(Type type, string nameProperty, int sqlDbType)
        {
            var name = type.GetProperty(nameProperty, BindingFlags.Public | BindingFlags.Instance);
            if (name is null || !name.CanWrite)
            {
                return (p, n) => { };
            }

            var dbType = type.GetProperty("SqlDbType", BindingFlags.Public | BindingFlags.Instance);
            if (dbType is not null && !dbType.CanWrite) dbType = null;

            var dm = new DynamicMethod(nameof(CreateFor) + "_" + type.Name, null,
                new[] { typeof(IDbDataParameter), typeof(string) }, true);
            var il = dm.GetILGenerator();
            il.Emit(OpCodes.Ldarg_0);
            il.Emit(OpCodes.Castclass, type);
            il.Emit(OpCodes.Ldarg_1);
            il.EmitCall(OpCodes.Callvirt, name.GetSetMethod()!, null);

            if (dbType is not null)
            {
                il.Emit(OpCodes.Ldarg_0);
                il.Emit(OpCodes.Castclass, type);
                il.Emit(OpCodes.Ldc_I4, sqlDbType);
                il.EmitCall(OpCodes.Callvirt, dbType.GetSetMethod()!, null);
            }

            il.Emit(OpCodes.Ret);
            return (Action<IDbDataParameter, string?>)dm.CreateDelegate(typeof(Action<IDbDataParameter, string?>));

        }

        // this needs to be done per-provider; "dynamic" doesn't work well on all runtimes, although that
        // would be a fair option otherwise
        internal static void ConfigureUDT(IDbDataParameter parameter, string typeName)
            => GetUDT(parameter.GetType())(parameter, typeName);
        internal static void ConfigureTVP(IDbDataParameter parameter, string? typeName)
            => GetTVP(parameter.GetType())(parameter, typeName);
    }
}


================================================
FILE: Dapper/SqlMapper.Async.cs
================================================
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Globalization;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Threading;
using System.Threading.Tasks;

namespace Dapper
{
    public static partial class SqlMapper
    {
        /// <summary>
        /// Execute a query asynchronously using Task.
        /// </summary>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="sql">The SQL to execute for the query.</param>
        /// <param name="param">The parameters to pass, if any.</param>
        /// <param name="transaction">The transaction to use, if any.</param>
        /// <param name="commandTimeout">The command timeout (in seconds).</param>
        /// <param name="commandType">The type of command to execute.</param>
        /// <remarks>Note: each row can be accessed via "dynamic", or by casting to an IDictionary&lt;string,object&gt;</remarks>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Grandfathered")]
        public static Task<IEnumerable<dynamic>> QueryAsync(this IDbConnection cnn, string sql, object? param = null, IDbTransaction? transaction = null, int? commandTimeout = null, CommandType? commandType = null) =>
            QueryAsync<dynamic>(cnn, typeof(DapperRow), new CommandDefinition(sql, param, transaction, commandTimeout, commandType, CommandFlags.Buffered, default));

        /// <summary>
        /// Execute a query asynchronously using Task.
        /// </summary>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="command">The command used to query on this connection.</param>
        /// <remarks>Note: each row can be accessed via "dynamic", or by casting to an IDictionary&lt;string,object&gt;</remarks>
        public static Task<IEnumerable<dynamic>> QueryAsync(this IDbConnection cnn, CommandDefinition command) =>
            QueryAsync<dynamic>(cnn, typeof(DapperRow), command);

        /// <summary>
        /// Execute a single-row query asynchronously using Task.
        /// </summary>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="command">The command used to query on this connection.</param>
        /// <remarks>Note: the row can be accessed via "dynamic", or by casting to an IDictionary&lt;string,object&gt;</remarks>
        public static Task<dynamic> QueryFirstAsync(this IDbConnection cnn, CommandDefinition command) =>
            QueryRowAsync<dynamic>(cnn, Row.First, typeof(DapperRow), command);

        /// <summary>
        /// Execute a single-row query asynchronously using Task.
        /// </summary>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="command">The command used to query on this connection.</param>
        /// <remarks>Note: the row can be accessed via "dynamic", or by casting to an IDictionary&lt;string,object&gt;</remarks>
        public static Task<dynamic?> QueryFirstOrDefaultAsync(this IDbConnection cnn, CommandDefinition command) =>
            QueryRowAsync<dynamic?>(cnn, Row.FirstOrDefault, typeof(DapperRow), command);

        /// <summary>
        /// Execute a single-row query asynchronously using Task.
        /// </summary>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="command">The command used to query on this connection.</param>
        /// <remarks>Note: the row can be accessed via "dynamic", or by casting to an IDictionary&lt;string,object&gt;</remarks>
        public static Task<dynamic> QuerySingleAsync(this IDbConnection cnn, CommandDefinition command) =>
            QueryRowAsync<dynamic>(cnn, Row.Single, typeof(DapperRow), command);

        /// <summary>
        /// Execute a single-row query asynchronously using Task.
        /// </summary>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="command">The command used to query on this connection.</param>
        /// <remarks>Note: the row can be accessed via "dynamic", or by casting to an IDictionary&lt;string,object&gt;</remarks>
        public static Task<dynamic?> QuerySingleOrDefaultAsync(this IDbConnection cnn, CommandDefinition command) =>
            QueryRowAsync<dynamic?>(cnn, Row.SingleOrDefault, typeof(DapperRow), command);

        /// <summary>
        /// Execute a query asynchronously using Task.
        /// </summary>
        /// <typeparam name="T">The type of results to return.</typeparam>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="sql">The SQL to execute for the query.</param>
        /// <param name="param">The parameters to pass, if any.</param>
        /// <param name="transaction">The transaction to use, if any.</param>
        /// <param name="commandTimeout">The command timeout (in seconds).</param>
        /// <param name="commandType">The type of command to execute.</param>
        /// <returns>
        /// A sequence of data of <typeparamref name="T"/>; if a basic type (int, string, etc) is queried then the data from the first column is assumed, otherwise an instance is
        /// created per row, and a direct column-name===member-name mapping is assumed (case insensitive).
        /// </returns>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Grandfathered")]
        public static Task<IEnumerable<T>> QueryAsync<T>(this IDbConnection cnn, string sql, object? param = null, IDbTransaction? transaction = null, int? commandTimeout = null, CommandType? commandType = null) =>
            QueryAsync<T>(cnn, typeof(T), new CommandDefinition(sql, param, transaction, commandTimeout, commandType, CommandFlags.Buffered, default));

        /// <summary>
        /// Execute a single-row query asynchronously using Task.
        /// </summary>
        /// <typeparam name="T">The type of result to return.</typeparam>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="sql">The SQL to execute for the query.</param>
        /// <param name="param">The parameters to pass, if any.</param>
        /// <param name="transaction">The transaction to use, if any.</param>
        /// <param name="commandTimeout">The command timeout (in seconds).</param>
        /// <param name="commandType">The type of command to execute.</param>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Grandfathered")]
        public static Task<T> QueryFirstAsync<T>(this IDbConnection cnn, string sql, object? param = null, IDbTransaction? transaction = null, int? commandTimeout = null, CommandType? commandType = null) =>
            QueryRowAsync<T>(cnn, Row.First, typeof(T), new CommandDefinition(sql, param, transaction, commandTimeout, commandType, CommandFlags.None, default));

        /// <summary>
        /// Execute a single-row query asynchronously using Task.
        /// </summary>
        /// <typeparam name="T">The type of result to return.</typeparam>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="sql">The SQL to execute for the query.</param>
        /// <param name="param">The parameters to pass, if any.</param>
        /// <param name="transaction">The transaction to use, if any.</param>
        /// <param name="commandTimeout">The command timeout (in seconds).</param>
        /// <param name="commandType">The type of command to execute.</param>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Grandfathered")]
        public static Task<T?> QueryFirstOrDefaultAsync<T>(this IDbConnection cnn, string sql, object? param = null, IDbTransaction? transaction = null, int? commandTimeout = null, CommandType? commandType = null) =>
            QueryRowAsync<T?>(cnn, Row.FirstOrDefault, typeof(T), new CommandDefinition(sql, param, transaction, commandTimeout, commandType, CommandFlags.None, default));

        /// <summary>
        /// Execute a single-row query asynchronously using Task.
        /// </summary>
        /// <typeparam name="T">The type of result to return.</typeparam>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="sql">The SQL to execute for the query.</param>
        /// <param name="param">The parameters to pass, if any.</param>
        /// <param name="transaction">The transaction to use, if any.</param>
        /// <param name="commandTimeout">The command timeout (in seconds).</param>
        /// <param name="commandType">The type of command to execute.</param>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Grandfathered")]
        public static Task<T> QuerySingleAsync<T>(this IDbConnection cnn, string sql, object? param = null, IDbTransaction? transaction = null, int? commandTimeout = null, CommandType? commandType = null) =>
            QueryRowAsync<T>(cnn, Row.Single, typeof(T), new CommandDefinition(sql, param, transaction, commandTimeout, commandType, CommandFlags.None, default));

        /// <summary>
        /// Execute a single-row query asynchronously using Task.
        /// </summary>
        /// <typeparam name="T">The type to return.</typeparam>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="sql">The SQL to execute for the query.</param>
        /// <param name="param">The parameters to pass, if any.</param>
        /// <param name="transaction">The transaction to use, if any.</param>
        /// <param name="commandTimeout">The command timeout (in seconds).</param>
        /// <param name="commandType">The type of command to execute.</param>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Grandfathered")]
        public static Task<T?> QuerySingleOrDefaultAsync<T>(this IDbConnection cnn, string sql, object? param = null, IDbTransaction? transaction = null, int? commandTimeout = null, CommandType? commandType = null) =>
            QueryRowAsync<T?>(cnn, Row.SingleOrDefault, typeof(T), new CommandDefinition(sql, param, transaction, commandTimeout, commandType, CommandFlags.None, default));

        /// <summary>
        /// Execute a single-row query asynchronously using Task.
        /// </summary>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="sql">The SQL to execute for the query.</param>
        /// <param name="param">The parameters to pass, if any.</param>
        /// <param name="transaction">The transaction to use, if any.</param>
        /// <param name="commandTimeout">The command timeout (in seconds).</param>
        /// <param name="commandType">The type of command to execute.</param>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Grandfathered")]
        public static Task<dynamic> QueryFirstAsync(this IDbConnection cnn, string sql, object? param = null, IDbTransaction? transaction = null, int? commandTimeout = null, CommandType? commandType = null) =>
            QueryRowAsync<dynamic>(cnn, Row.First, typeof(DapperRow), new CommandDefinition(sql, param, transaction, commandTimeout, commandType, CommandFlags.None, default));

        /// <summary>
        /// Execute a single-row query asynchronously using Task.
        /// </summary>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="sql">The SQL to execute for the query.</param>
        /// <param name="param">The parameters to pass, if any.</param>
        /// <param name="transaction">The transaction to use, if any.</param>
        /// <param name="commandTimeout">The command timeout (in seconds).</param>
        /// <param name="commandType">The type of command to execute.</param>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Grandfathered")]
        public static Task<dynamic?> QueryFirstOrDefaultAsync(this IDbConnection cnn, string sql, object? param = null, IDbTransaction? transaction = null, int? commandTimeout = null, CommandType? commandType = null) =>
            QueryRowAsync<dynamic?>(cnn, Row.FirstOrDefault, typeof(DapperRow), new CommandDefinition(sql, param, transaction, commandTimeout, commandType, CommandFlags.None, default));

        /// <summary>
        /// Execute a single-row query asynchronously using Task.
        /// </summary>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="sql">The SQL to execute for the query.</param>
        /// <param name="param">The parameters to pass, if any.</param>
        /// <param name="transaction">The transaction to use, if any.</param>
        /// <param name="commandTimeout">The command timeout (in seconds).</param>
        /// <param name="commandType">The type of command to execute.</param>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Grandfathered")]
        public static Task<dynamic> QuerySingleAsync(this IDbConnection cnn, string sql, object? param = null, IDbTransaction? transaction = null, int? commandTimeout = null, CommandType? commandType = null) =>
            QueryRowAsync<dynamic>(cnn, Row.Single, typeof(DapperRow), new CommandDefinition(sql, param, transaction, commandTimeout, commandType, CommandFlags.None, default));

        /// <summary>
        /// Execute a single-row query asynchronously using Task.
        /// </summary>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="sql">The SQL to execute for the query.</param>
        /// <param name="param">The parameters to pass, if any.</param>
        /// <param name="transaction">The transaction to use, if any.</param>
        /// <param name="commandTimeout">The command timeout (in seconds).</param>
        /// <param name="commandType">The type of command to execute.</param>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Grandfathered")]
        public static Task<dynamic?> QuerySingleOrDefaultAsync(this IDbConnection cnn, string sql, object? param = null, IDbTransaction? transaction = null, int? commandTimeout = null, CommandType? commandType = null) =>
            QueryRowAsync<dynamic?>(cnn, Row.SingleOrDefault, typeof(DapperRow), new CommandDefinition(sql, param, transaction, commandTimeout, commandType, CommandFlags.None, default));

        /// <summary>
        /// Execute a query asynchronously using Task.
        /// </summary>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="type">The type to return.</param>
        /// <param name="sql">The SQL to execute for the query.</param>
        /// <param name="param">The parameters to pass, if any.</param>
        /// <param name="transaction">The transaction to use, if any.</param>
        /// <param name="commandTimeout">The command timeout (in seconds).</param>
        /// <param name="commandType">The type of command to execute.</param>
        /// <exception cref="ArgumentNullException"><paramref name="type"/> is <c>null</c>.</exception>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Grandfathered")]
        public static Task<IEnumerable<object>> QueryAsync(this IDbConnection cnn, Type type, string sql, object? param = null, IDbTransaction? transaction = null, int? commandTimeout = null, CommandType? commandType = null)
        {
            if (type is null) throw new ArgumentNullException(nameof(type));
            return QueryAsync<object>(cnn, type, new CommandDefinition(sql, param, transaction, commandTimeout, commandType, CommandFlags.Buffered, default));
        }

        /// <summary>
        /// Execute a single-row query asynchronously using Task.
        /// </summary>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="type">The type to return.</param>
        /// <param name="sql">The SQL to execute for the query.</param>
        /// <param name="param">The parameters to pass, if any.</param>
        /// <param name="transaction">The transaction to use, if any.</param>
        /// <param name="commandTimeout">The command timeout (in seconds).</param>
        /// <param name="commandType">The type of command to execute.</param>
        /// <exception cref="ArgumentNullException"><paramref name="type"/> is <c>null</c>.</exception>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Grandfathered")]
        public static Task<object> QueryFirstAsync(this IDbConnection cnn, Type type, string sql, object? param = null, IDbTransaction? transaction = null, int? commandTimeout = null, CommandType? commandType = null)
        {
            if (type is null) throw new ArgumentNullException(nameof(type));
            return QueryRowAsync<object>(cnn, Row.First, type, new CommandDefinition(sql, param, transaction, commandTimeout, commandType, CommandFlags.None, default));
        }
        /// <summary>
        /// Execute a single-row query asynchronously using Task.
        /// </summary>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="type">The type to return.</param>
        /// <param name="sql">The SQL to execute for the query.</param>
        /// <param name="param">The parameters to pass, if any.</param>
        /// <param name="transaction">The transaction to use, if any.</param>
        /// <param name="commandTimeout">The command timeout (in seconds).</param>
        /// <param name="commandType">The type of command to execute.</param>
        /// <exception cref="ArgumentNullException"><paramref name="type"/> is <c>null</c>.</exception>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Grandfathered")]
        public static Task<object?> QueryFirstOrDefaultAsync(this IDbConnection cnn, Type type, string sql, object? param = null, IDbTransaction? transaction = null, int? commandTimeout = null, CommandType? commandType = null)
        {
            if (type is null) throw new ArgumentNullException(nameof(type));
            return QueryRowAsync<object?>(cnn, Row.FirstOrDefault, type, new CommandDefinition(sql, param, transaction, commandTimeout, commandType, CommandFlags.None, default));
        }
        /// <summary>
        /// Execute a single-row query asynchronously using Task.
        /// </summary>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="type">The type to return.</param>
        /// <param name="sql">The SQL to execute for the query.</param>
        /// <param name="param">The parameters to pass, if any.</param>
        /// <param name="transaction">The transaction to use, if any.</param>
        /// <param name="commandTimeout">The command timeout (in seconds).</param>
        /// <param name="commandType">The type of command to execute.</param>
        /// <exception cref="ArgumentNullException"><paramref name="type"/> is <c>null</c>.</exception>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Grandfathered")]
        public static Task<object> QuerySingleAsync(this IDbConnection cnn, Type type, string sql, object? param = null, IDbTransaction? transaction = null, int? commandTimeout = null, CommandType? commandType = null)
        {
            if (type is null) throw new ArgumentNullException(nameof(type));
            return QueryRowAsync<object>(cnn, Row.Single, type, new CommandDefinition(sql, param, transaction, commandTimeout, commandType, CommandFlags.None, default));
        }
        /// <summary>
        /// Execute a single-row query asynchronously using Task.
        /// </summary>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="type">The type to return.</param>
        /// <param name="sql">The SQL to execute for the query.</param>
        /// <param name="param">The parameters to pass, if any.</param>
        /// <param name="transaction">The transaction to use, if any.</param>
        /// <param name="commandTimeout">The command timeout (in seconds).</param>
        /// <param name="commandType">The type of command to execute.</param>
        /// <exception cref="ArgumentNullException"><paramref name="type"/> is <c>null</c>.</exception>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Grandfathered")]
        public static Task<object?> QuerySingleOrDefaultAsync(this IDbConnection cnn, Type type, string sql, object? param = null, IDbTransaction? transaction = null, int? commandTimeout = null, CommandType? commandType = null)
        {
            if (type is null) throw new ArgumentNullException(nameof(type));
            return QueryRowAsync<object?>(cnn, Row.SingleOrDefault, type, new CommandDefinition(sql, param, transaction, commandTimeout, commandType, CommandFlags.None, default));
        }

        /// <summary>
        /// Execute a query asynchronously using Task.
        /// </summary>
        /// <typeparam name="T">The type to return.</typeparam>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="command">The command used to query on this connection.</param>
        /// <returns>
        /// A sequence of data of <typeparamref name="T"/>; if a basic type (int, string, etc) is queried then the data from the first column is assumed, otherwise an instance is
        /// created per row, and a direct column-name===member-name mapping is assumed (case insensitive).
        /// </returns>
        public static Task<IEnumerable<T>> QueryAsync<T>(this IDbConnection cnn, CommandDefinition command) =>
            QueryAsync<T>(cnn, typeof(T), command);

        /// <summary>
        /// Execute a query asynchronously using Task.
        /// </summary>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="type">The type to return.</param>
        /// <param name="command">The command used to query on this connection.</param>
        public static Task<IEnumerable<object>> QueryAsync(this IDbConnection cnn, Type type, CommandDefinition command) =>
            QueryAsync<object>(cnn, type, command);

        /// <summary>
        /// Execute a single-row query asynchronously using Task.
        /// </summary>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="type">The type to return.</param>
        /// <param name="command">The command used to query on this connection.</param>
        public static Task<object> QueryFirstAsync(this IDbConnection cnn, Type type, CommandDefinition command) =>
            QueryRowAsync<object>(cnn, Row.First, type, command);

        /// <summary>
        /// Execute a single-row query asynchronously using Task.
        /// </summary>
        /// <typeparam name="T">The type to return.</typeparam>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="command">The command used to query on this connection.</param>
        public static Task<T> QueryFirstAsync<T>(this IDbConnection cnn, CommandDefinition command) =>
            QueryRowAsync<T>(cnn, Row.First, typeof(T), command);

        /// <summary>
        /// Execute a single-row query asynchronously using Task.
        /// </summary>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="type">The type to return.</param>
        /// <param name="command">The command used to query on this connection.</param>
        public static Task<object?> QueryFirstOrDefaultAsync(this IDbConnection cnn, Type type, CommandDefinition command) =>
            QueryRowAsync<object?>(cnn, Row.FirstOrDefault, type, command);

        /// <summary>
        /// Execute a single-row query asynchronously using Task.
        /// </summary>
        /// <typeparam name="T">The type to return.</typeparam>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="command">The command used to query on this connection.</param>
        public static Task<T?> QueryFirstOrDefaultAsync<T>(this IDbConnection cnn, CommandDefinition command) =>
            QueryRowAsync<T?>(cnn, Row.FirstOrDefault, typeof(T), command);

        /// <summary>
        /// Execute a single-row query asynchronously using Task.
        /// </summary>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="type">The type to return.</param>
        /// <param name="command">The command used to query on this connection.</param>
        public static Task<object> QuerySingleAsync(this IDbConnection cnn, Type type, CommandDefinition command) =>
            QueryRowAsync<object>(cnn, Row.Single, type, command);

        /// <summary>
        /// Execute a single-row query asynchronously using Task.
        /// </summary>
        /// <typeparam name="T">The type to return.</typeparam>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="command">The command used to query on this connection.</param>
        public static Task<T> QuerySingleAsync<T>(this IDbConnection cnn, CommandDefinition command) =>
            QueryRowAsync<T>(cnn, Row.Single, typeof(T), command);

        /// <summary>
        /// Execute a single-row query asynchronously using Task.
        /// </summary>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="type">The type to return.</param>
        /// <param name="command">The command used to query on this connection.</param>
        public static Task<object?> QuerySingleOrDefaultAsync(this IDbConnection cnn, Type type, CommandDefinition command) =>
            QueryRowAsync<object?>(cnn, Row.SingleOrDefault, type, command);

        /// <summary>
        /// Execute a single-row query asynchronously using Task.
        /// </summary>
        /// <typeparam name="T">The type to return.</typeparam>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="command">The command used to query on this connection.</param>
        public static Task<T?> QuerySingleOrDefaultAsync<T>(this IDbConnection cnn, CommandDefinition command) =>
            QueryRowAsync<T?>(cnn, Row.SingleOrDefault, typeof(T), command);

        private static Task<DbDataReader> ExecuteReaderWithFlagsFallbackAsync(DbCommand cmd, bool wasClosed, CommandBehavior behavior, CancellationToken cancellationToken)
        {
            var task = cmd.ExecuteReaderAsync(GetBehavior(wasClosed, behavior), cancellationToken);
            if (task.Status == TaskStatus.Faulted && Settings.DisableCommandBehaviorOptimizations(behavior, task.Exception!.InnerException!))
            { // we can retry; this time it will have different flags
                return cmd.ExecuteReaderAsync(GetBehavior(wasClosed, behavior), cancellationToken);
            }
            return task;
        }

        /// <summary>
        /// Attempts to open a connection asynchronously, with a better error message for unsupported usages.
        /// </summary>
        private static Task TryOpenAsync(this IDbConnection cnn, CancellationToken cancel)
        {
            if (cnn is DbConnection dbConn)
            {
                return dbConn.OpenAsync(cancel);
            }
            else
            {
                throw new InvalidOperationException("Async operations require use of a DbConnection or an already-open IDbConnection");
            }
        }

        /// <summary>
        /// Attempts setup a <see cref="DbCommand"/> on a <see cref="DbConnection"/>, with a better error message for unsupported usages.
        /// </summary>
        private static DbCommand TrySetupAsyncCommand(this CommandDefinition command, IDbConnection cnn, Action<IDbCommand, object?>? paramReader)
        {
            if (command.SetupCommand(cnn, paramReader) is DbCommand dbCommand)
            {
                return dbCommand;
            }
            else
            {
                throw new InvalidOperationException("Async operations require use of a DbConnection or an IDbConnection where .CreateCommand() returns a DbCommand");
            }
        }

        private static async Task<IEnumerable<T>> QueryAsync<T>(this IDbConnection cnn, Type effectiveType, CommandDefinition command)
        {
            object? param = command.Parameters;
            var identity = new Identity(command.CommandText, command.CommandTypeDirect, cnn, effectiveType, param?.GetType());
            var info = GetCacheInfo(identity, param, command.AddToCache);
            bool wasClosed = cnn.State == ConnectionState.Closed;
            var cancel = command.CancellationToken;
            using var cmd = command.TrySetupAsyncCommand(cnn, info.ParamReader);
            DbDataReader? reader = null;
            try
            {
                if (wasClosed) await cnn.TryOpenAsync(cancel).ConfigureAwait(false);
                reader = await ExecuteReaderWithFlagsFallbackAsync(cmd, wasClosed, CommandBehavior.SequentialAccess | CommandBehavior.SingleResult, cancel).ConfigureAwait(false);

                var tuple = info.Deserializer;
                int hash = GetColumnHash(reader);
                if (tuple.Func is null || tuple.Hash != hash)
                {
                    if (reader.FieldCount == 0)
                        return Enumerable.Empty<T>();
                    tuple = info.Deserializer = new DeserializerState(hash, GetDeserializer(effectiveType, reader, 0, -1, false));
                    if (command.AddToCache) SetQueryCache(identity, info);
                }

                var func = tuple.Func;

                if (command.Buffered)
                {
                    var buffer = new List<T>();
                    var convertToType = Nullable.GetUnderlyingType(effectiveType) ?? effectiveType;
                    while (await reader.ReadAsync(cancel).ConfigureAwait(false))
                    {
                        object val = func(reader);
                        buffer.Add(GetValue<T>(reader, effectiveType, val));
                    }
                    while (await reader.NextResultAsync(cancel).ConfigureAwait(false)) { /* ignore subsequent result sets */ }
                    command.OnCompleted();
                    return buffer;
                }
                else
                {
                    // can't use ReadAsync / cancellation; but this will have to do
                    wasClosed = false; // don't close if handing back an open reader; rely on the command-behavior
                    var deferred = ExecuteReaderSync<T>(reader, func, command.Parameters);
                    reader = null; // to prevent it being disposed before the caller gets to see it
                    return deferred;
                }
            }
            finally
            {
                using (reader) { /* dispose if non-null */ }
                if (wasClosed) cnn.Close();
            }
        }

        private static async Task<T> QueryRowAsync<T>(this IDbConnection cnn, Row row, Type effectiveType, CommandDefinition command)
        {
            object? param = command.Parameters;
            var identity = new Identity(command.CommandText, command.CommandTypeDirect, cnn, effectiveType, param?.GetType());
            var info = GetCacheInfo(identity, param, command.AddToCache);
            bool wasClosed = cnn.State == ConnectionState.Closed;
            var cancel = command.CancellationToken;
            using var cmd = command.TrySetupAsyncCommand(cnn, info.ParamReader);
            DbDataReader? reader = null;
            try
            {
                if (wasClosed) await cnn.TryOpenAsync(cancel).ConfigureAwait(false);
                reader = await ExecuteReaderWithFlagsFallbackAsync(cmd, wasClosed, (row & Row.Single) != 0
                ? CommandBehavior.SequentialAccess | CommandBehavior.SingleResult // need to allow multiple rows, to check fail condition
                : CommandBehavior.SequentialAccess | CommandBehavior.SingleResult | CommandBehavior.SingleRow, cancel).ConfigureAwait(false);

                T result = default!;
                if (await reader.ReadAsync(cancel).ConfigureAwait(false) && reader.FieldCount != 0)
                {
                    result = ReadRow<T>(info, identity, ref command, effectiveType, reader);

                    if ((row & Row.Single) != 0 && await reader.ReadAsync(cancel).ConfigureAwait(false)) ThrowMultipleRows(row);
                    while (await reader.ReadAsync(cancel).ConfigureAwait(false)) { /* ignore rows after the first */ }
                }
                else if ((row & Row.FirstOrDefault) == 0) // demanding a row, and don't have one
                {
                    ThrowZeroRows(row);
                }
                while (await reader.NextResultAsync(cancel).ConfigureAwait(false)) { /* ignore result sets after the first */ }
                command.OnCompleted();
                return result;
            }
            finally
            {
                using (reader) { /* dispose if non-null */ }
                if (wasClosed) cnn.Close();
            }
        }

        /// <summary>
        /// Execute a command asynchronously using Task.
        /// </summary>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="sql">The SQL to execute for this query.</param>
        /// <param name="param">The parameters to use for this query.</param>
        /// <param name="transaction">The transaction to use for this query.</param>
        /// <param name="commandTimeout">Number of seconds before command execution timeout.</param>
        /// <param name="commandType">Is it a stored proc or a batch?</param>
        /// <returns>The number of rows affected.</returns>
        public static Task<int> ExecuteAsync(this IDbConnection cnn, string sql, object? param = null, IDbTransaction? transaction = null, int? commandTimeout = null, CommandType? commandType = null) =>
            ExecuteAsync(cnn, new CommandDefinition(sql, param, transaction, commandTimeout, commandType, CommandFlags.Buffered, default));

        /// <summary>
        /// Execute a command asynchronously using Task.
        /// </summary>
        /// <param name="cnn">The connection to execute on.</param>
        /// <param name="command">The command to execute on this connection.</param>
        /// <returns>The number of rows affected.</returns>
        public static Task<int> ExecuteAsync(this IDbConnection cnn, CommandDefinition command)
        {
            object? param = command.Parameters;
            IEnumerable? multiExec = GetMultiExec(param);
            if (multiExec is not null)
            {
                return ExecuteMultiImplAsync(cnn, command, multiExec);
            }
            else
            {
                return ExecuteImplAsync(cnn, command, param);
            }
        }

        private readonly struct AsyncExecState
        {
            public readonly DbCommand Command;
            public readonly Task<int> Task;
            public AsyncExecState(DbCommand command, Task<int> task)
            {
                Command = command;
                Task = task;
            }
        }

        private static async Task<int> ExecuteMultiImplAsync(IDbConnection cnn, CommandDefinition command, IEnumerable multiExec)
        {
            bool isFirst = true;
            int total = 0;
            bool wasClosed = cnn.State == ConnectionState.Closed;
            try
            {
                if (wasClosed) await cnn.TryOpenAsync(command.CancellationToken).ConfigureAwait(false);

                CacheInfo? info = null;
                string? masterSql = null;
                if ((command.Flags & CommandFlags.Pipelined) != 0)
                {
                    const int MAX_PENDING = 100;
                    var pending = new Queue<AsyncExecState>(MAX_PENDING);
                    DbCommand? cmd = null;
                    try
                    {
                        foreach (var obj in multiExec)
                        {
                            if (isFirst)
                            {
                                isFirst = false;
                                cmd = command.TrySetupAsyncCommand(cnn, null);
                                masterSql = cmd.CommandText;
                                var identity = new Identity(command.CommandText, cmd.CommandType, cnn, null, obj.GetType());
                                info = GetCacheInfo(identity, obj, command.AddToCache);
                            }
                            else if (pending.Count >= MAX_PENDING)
                            {
                                var recycled = pending.Dequeue();
                                total += await recycled.Task.ConfigureAwait(false);
                                cmd = recycled.Command;
                                cmd.CommandText = masterSql; // because we do magic replaces on "in" etc
                                cmd.Parameters.Clear(); // current code is Add-tastic
                            }
                            else
                            {
                                cmd = command.TrySetupAsyncCommand(cnn, null);
                            }
                            info!.ParamReader!(cmd, obj);

                            var task = cmd.ExecuteNonQueryAsync(command.CancellationToken);
                            pending.Enqueue(new AsyncExecState(cmd, task));
                            cmd = null; // note the using in the finally: this avoids a double-dispose
                        }
                        while (pending.Count != 0)
                        {
                            var pair = pending.Dequeue();
                            using (pair.Command) { /* dispose commands */ }
                            total += await pair.Task.ConfigureAwait(false);
                        }
                    }
                    finally
                    {
                        // this only has interesting work to do if there are failures
                        using (cmd) { /* dispose commands */ }
                        while (pending.Count != 0)
                        { // dispose tasks even in failure
                            using (pending.Dequeue().Command) { /* dispose commands */ }
                        }
                    }
                }
                else
                {
                    using var cmd = command.TrySetupAsyncCommand(cnn, null);
                    foreach (var obj in multiExec)
                    {
                        if (isFirst)
                        {
                            masterSql = cmd.CommandText;
                            isFirst = false;
                            var identity = new Identity(command.CommandText, cmd.CommandType, cnn, null, obj.GetType());
                            info = GetCacheInfo(identity, obj, command.AddToCache);
                        }
                        else
                        {
                            cmd.CommandText = masterSql; // because we do magic replaces on "in" etc
                            cmd.Parameters.Clear(); // current code is Add-tastic
                        }
                        info!.ParamReader!(cmd, obj);
                        total += await cmd.ExecuteNonQueryAsync(command.CancellationToken).ConfigureAwait(false);
                    }
                }

                command.OnCompleted();
            }
            finally
            {
                if (wasClosed) cnn.Close();
            }
            return total;
        }

        private static async Task<int> ExecuteImplAsync(IDbConnection cnn, CommandDefinition command, object? param)
        {
            var identity = new Identity(command.CommandText, command.CommandTypeDirect, cnn, null, param?.GetType());
            var info = GetCacheInfo(identity, param, command.AddToCache);
            bool wasClosed = cnn.State == ConnectionState.Closed;
            using var cmd = command.TrySetupAsyncCommand(cnn, info.ParamReader);
            try
            {
                if (wasClosed) await cnn.TryOpenAsync(command.CancellationToken).ConfigureAwait(false);
                var result = await cmd.ExecuteNonQueryAsync(command.CancellationToken).ConfigureAwait(false);
                command.OnCompleted();
                return result;
            }
            finally
            {
                if (wasClosed) cnn.Close();
            }
        }

        /// <summary>
        /// Perform an asynchronous multi-mapping query with 2 input types.
        /// This returns a single type, combined from the raw types via <paramref name="map"/>.
        /// </summary>
        /// <typeparam name="TFirst">The first type in the recordset.</typeparam>
        /// <typeparam name="TSecond">The second type in the recordset.</typeparam>
        /// <typeparam name="TReturn">The combined type to return.</typeparam>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="sql">The SQL to execute for this query.</param>
        /// <param name="map">The function to map row types to the return type.</param>
        /// <param name="param">The parameters to use for this query.</param>
        /// <param name="transaction">The transaction to use for this query.</param>
        /// <param name="buffered">Whether to buffer the results in memory.</param>
        /// <param name="splitOn">The field we should split and read the second object from (default: "Id").</param>
        /// <param name="commandTimeout">Number of seconds before command execution timeout.</param>
        /// <param name="commandType">Is it a stored proc or a batch?</param>
        /// <returns>An enumerable of <typeparamref name="TReturn"/>.</returns>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Grandfathered")]
        public static Task<IEnumerable<TReturn>> QueryAsync<TFirst, TSecond, TReturn>(this IDbConnection cnn, string sql, Func<TFirst, TSecond, TReturn> map, object? param = null, IDbTransaction? transaction = null, bool buffered = true, string splitOn = "Id", int? commandTimeout = null, CommandType? commandType = null) =>
            MultiMapAsync<TFirst, TSecond, DontMap, DontMap, DontMap, DontMap, DontMap, TReturn>(cnn,
                new CommandDefinition(sql, param, transaction, commandTimeout, commandType, buffered ? CommandFlags.Buffered : CommandFlags.None, default), map, splitOn);

        /// <summary>
        /// Perform an asynchronous multi-mapping query with 2 input types.
        /// This returns a single type, combined from the raw types via <paramref name="map"/>.
        /// </summary>
        /// <typeparam name="TFirst">The first type in the recordset.</typeparam>
        /// <typeparam name="TSecond">The second type in the recordset.</typeparam>
        /// <typeparam name="TReturn">The combined type to return.</typeparam>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="splitOn">The field we should split and read the second object from (default: "Id").</param>
        /// <param name="command">The command to execute.</param>
        /// <param name="map">The function to map row types to the return type.</param>
        /// <returns>An enumerable of <typeparamref name="TReturn"/>.</returns>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Grandfathered")]
        public static Task<IEnumerable<TReturn>> QueryAsync<TFirst, TSecond, TReturn>(this IDbConnection cnn, CommandDefinition command, Func<TFirst, TSecond, TReturn> map, string splitOn = "Id") =>
            MultiMapAsync<TFirst, TSecond, DontMap, DontMap, DontMap, DontMap, DontMap, TReturn>(cnn, command, map, splitOn);

        /// <summary>
        /// Perform an asynchronous multi-mapping query with 3 input types.
        /// This returns a single type, combined from the raw types via <paramref name="map"/>.
        /// </summary>
        /// <typeparam name="TFirst">The first type in the recordset.</typeparam>
        /// <typeparam name="TSecond">The second type in the recordset.</typeparam>
        /// <typeparam name="TThird">The third type in the recordset.</typeparam>
        /// <typeparam name="TReturn">The combined type to return.</typeparam>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="sql">The SQL to execute for this query.</param>
        /// <param name="map">The function to map row types to the return type.</param>
        /// <param name="param">The parameters to use for this query.</param>
        /// <param name="transaction">The transaction to use for this query.</param>
        /// <param name="buffered">Whether to buffer the results in memory.</param>
        /// <param name="splitOn">The field we should split and read the second object from (default: "Id").</param>
        /// <param name="commandTimeout">Number of seconds before command execution timeout.</param>
        /// <param name="commandType">Is it a stored proc or a batch?</param>
        /// <returns>An enumerable of <typeparamref name="TReturn"/>.</returns>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Grandfathered")]
        public static Task<IEnumerable<TReturn>> QueryAsync<TFirst, TSecond, TThird, TReturn>(this IDbConnection cnn, string sql, Func<TFirst, TSecond, TThird, TReturn> map, object? param = null, IDbTransaction? transaction = null, bool buffered = true, string splitOn = "Id", int? commandTimeout = null, CommandType? commandType = null) =>
            MultiMapAsync<TFirst, TSecond, TThird, DontMap, DontMap, DontMap, DontMap, TReturn>(cnn,
                new CommandDefinition(sql, param, transaction, commandTimeout, commandType, buffered ? CommandFlags.Buffered : CommandFlags.None, default), map, splitOn);

        /// <summary>
        /// Perform an asynchronous multi-mapping query with 3 input types.
        /// This returns a single type, combined from the raw types via <paramref name="map"/>.
        /// </summary>
        /// <typeparam name="TFirst">The first type in the recordset.</typeparam>
        /// <typeparam name="TSecond">The second type in the recordset.</typeparam>
        /// <typeparam name="TThird">The third type in the recordset.</typeparam>
        /// <typeparam name="TReturn">The combined type to return.</typeparam>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="splitOn">The field we should split and read the second object from (default: "Id").</param>
        /// <param name="command">The command to execute.</param>
        /// <param name="map">The function to map row types to the return type.</param>
        /// <returns>An enumerable of <typeparamref name="TReturn"/>.</returns>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Grandfathered")]
        public static Task<IEnumerable<TReturn>> QueryAsync<TFirst, TSecond, TThird, TReturn>(this IDbConnection cnn, CommandDefinition command, Func<TFirst, TSecond, TThird, TReturn> map, string splitOn = "Id") =>
            MultiMapAsync<TFirst, TSecond, TThird, DontMap, DontMap, DontMap, DontMap, TReturn>(cnn, command, map, splitOn);

        /// <summary>
        /// Perform an asynchronous multi-mapping query with 4 input types.
        /// This returns a single type, combined from the raw types via <paramref name="map"/>.
        /// </summary>
        /// <typeparam name="TFirst">The first type in the recordset.</typeparam>
        /// <typeparam name="TSecond">The second type in the recordset.</typeparam>
        /// <typeparam name="TThird">The third type in the recordset.</typeparam>
        /// <typeparam name="TFourth">The fourth type in the recordset.</typeparam>
        /// <typeparam name="TReturn">The combined type to return.</typeparam>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="sql">The SQL to execute for this query.</param>
        /// <param name="map">The function to map row types to the return type.</param>
        /// <param name="param">The parameters to use for this query.</param>
        /// <param name="transaction">The transaction to use for this query.</param>
        /// <param name="buffered">Whether to buffer the results in memory.</param>
        /// <param name="splitOn">The field we should split and read the second object from (default: "Id").</param>
        /// <param name="commandTimeout">Number of seconds before command execution timeout.</param>
        /// <param name="commandType">Is it a stored proc or a batch?</param>
        /// <returns>An enumerable of <typeparamref name="TReturn"/>.</returns>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Grandfathered")]
        public static Task<IEnumerable<TReturn>> QueryAsync<TFirst, TSecond, TThird, TFourth, TReturn>(this IDbConnection cnn, string sql, Func<TFirst, TSecond, TThird, TFourth, TReturn> map, object? param = null, IDbTransaction? transaction = null, bool buffered = true, string splitOn = "Id", int? commandTimeout = null, CommandType? commandType = null) =>
            MultiMapAsync<TFirst, TSecond, TThird, TFourth, DontMap, DontMap, DontMap, TReturn>(cnn,
                new CommandDefinition(sql, param, transaction, commandTimeout, commandType, buffered ? CommandFlags.Buffered : CommandFlags.None, default), map, splitOn);

        /// <summary>
        /// Perform an asynchronous multi-mapping query with 4 input types.
        /// This returns a single type, combined from the raw types via <paramref name="map"/>.
        /// </summary>
        /// <typeparam name="TFirst">The first type in the recordset.</typeparam>
        /// <typeparam name="TSecond">The second type in the recordset.</typeparam>
        /// <typeparam name="TThird">The third type in the recordset.</typeparam>
        /// <typeparam name="TFourth">The fourth type in the recordset.</typeparam>
        /// <typeparam name="TReturn">The combined type to return.</typeparam>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="splitOn">The field we should split and read the second object from (default: "Id").</param>
        /// <param name="command">The command to execute.</param>
        /// <param name="map">The function to map row types to the return type.</param>
        /// <returns>An enumerable of <typeparamref name="TReturn"/>.</returns>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Grandfathered")]
        public static Task<IEnumerable<TReturn>> QueryAsync<TFirst, TSecond, TThird, TFourth, TReturn>(this IDbConnection cnn, CommandDefinition command, Func<TFirst, TSecond, TThird, TFourth, TReturn> map, string splitOn = "Id") =>
            MultiMapAsync<TFirst, TSecond, TThird, TFourth, DontMap, DontMap, DontMap, TReturn>(cnn, command, map, splitOn);

        /// <summary>
        /// Perform an asynchronous multi-mapping query with 5 input types.
        /// This returns a single type, combined from the raw types via <paramref name="map"/>.
        /// </summary>
        /// <typeparam name="TFirst">The first type in the recordset.</typeparam>
        /// <typeparam name="TSecond">The second type in the recordset.</typeparam>
        /// <typeparam name="TThird">The third type in the recordset.</typeparam>
        /// <typeparam name="TFourth">The fourth type in the recordset.</typeparam>
        /// <typeparam name="TFifth">The fifth type in the recordset.</typeparam>
        /// <typeparam name="TReturn">The combined type to return.</typeparam>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="sql">The SQL to execute for this query.</param>
        /// <param name="map">The function to map row types to the return type.</param>
        /// <param name="param">The parameters to use for this query.</param>
        /// <param name="transaction">The transaction to use for this query.</param>
        /// <param name="buffered">Whether to buffer the results in memory.</param>
        /// <param name="splitOn">The field we should split and read the second object from (default: "Id").</param>
        /// <param name="commandTimeout">Number of seconds before command execution timeout.</param>
        /// <param name="commandType">Is it a stored proc or a batch?</param>
        /// <returns>An enumerable of <typeparamref name="TReturn"/>.</returns>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Grandfathered")]
        public static Task<IEnumerable<TReturn>> QueryAsync<TFirst, TSecond, TThird, TFourth, TFifth, TReturn>(this IDbConnection cnn, string sql, Func<TFirst, TSecond, TThird, TFourth, TFifth, TReturn> map, object? param = null, IDbTransaction? transaction = null, bool buffered = true, string splitOn = "Id", int? commandTimeout = null, CommandType? commandType = null) =>
            MultiMapAsync<TFirst, TSecond, TThird, TFourth, TFifth, DontMap, DontMap, TReturn>(cnn,
                new CommandDefinition(sql, param, transaction, commandTimeout, commandType, buffered ? CommandFlags.Buffered : CommandFlags.None, default), map, splitOn);

        /// <summary>
        /// Perform an asynchronous multi-mapping query with 5 input types.
        /// This returns a single type, combined from the raw types via <paramref name="map"/>.
        /// </summary>
        /// <typeparam name="TFirst">The first type in the recordset.</typeparam>
        /// <typeparam name="TSecond">The second type in the recordset.</typeparam>
        /// <typeparam name="TThird">The third type in the recordset.</typeparam>
        /// <typeparam name="TFourth">The fourth type in the recordset.</typeparam>
        /// <typeparam name="TFifth">The fifth type in the recordset.</typeparam>
        /// <typeparam name="TReturn">The combined type to return.</typeparam>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="splitOn">The field we should split and read the second object from (default: "Id").</param>
        /// <param name="command">The command to execute.</param>
        /// <param name="map">The function to map row types to the return type.</param>
        /// <returns>An enumerable of <typeparamref name="TReturn"/>.</returns>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Grandfathered")]
        public static Task<IEnumerable<TReturn>> QueryAsync<TFirst, TSecond, TThird, TFourth, TFifth, TReturn>(this IDbConnection cnn, CommandDefinition command, Func<TFirst, TSecond, TThird, TFourth, TFifth, TReturn> map, string splitOn = "Id") =>
            MultiMapAsync<TFirst, TSecond, TThird, TFourth, TFifth, DontMap, DontMap, TReturn>(cnn, command, map, splitOn);

        /// <summary>
        /// Perform an asynchronous multi-mapping query with 6 input types.
        /// This returns a single type, combined from the raw types via <paramref name="map"/>.
        /// </summary>
        /// <typeparam name="TFirst">The first type in the recordset.</typeparam>
        /// <typeparam name="TSecond">The second type in the recordset.</typeparam>
        /// <typeparam name="TThird">The third type in the recordset.</typeparam>
        /// <typeparam name="TFourth">The fourth type in the recordset.</typeparam>
        /// <typeparam name="TFifth">The fifth type in the recordset.</typeparam>
        /// <typeparam name="TSixth">The sixth type in the recordset.</typeparam>
        /// <typeparam name="TReturn">The combined type to return.</typeparam>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="sql">The SQL to execute for this query.</param>
        /// <param name="map">The function to map row types to the return type.</param>
        /// <param name="param">The parameters to use for this query.</param>
        /// <param name="transaction">The transaction to use for this query.</param>
        /// <param name="buffered">Whether to buffer the results in memory.</param>
        /// <param name="splitOn">The field we should split and read the second object from (default: "Id").</param>
        /// <param name="commandTimeout">Number of seconds before command execution timeout.</param>
        /// <param name="commandType">Is it a stored proc or a batch?</param>
        /// <returns>An enumerable of <typeparamref name="TReturn"/>.</returns>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Grandfathered")]
        public static Task<IEnumerable<TReturn>> QueryAsync<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TReturn>(this IDbConnection cnn, string sql, Func<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TReturn> map, object? param = null, IDbTransaction? transaction = null, bool buffered = true, string splitOn = "Id", int? commandTimeout = null, CommandType? commandType = null) =>
            MultiMapAsync<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, DontMap, TReturn>(cnn,
                new CommandDefinition(sql, param, transaction, commandTimeout, commandType, buffered ? CommandFlags.Buffered : CommandFlags.None, default), map, splitOn);

        /// <summary>
        /// Perform an asynchronous multi-mapping query with 6 input types.
        /// This returns a single type, combined from the raw types via <paramref name="map"/>.
        /// </summary>
        /// <typeparam name="TFirst">The first type in the recordset.</typeparam>
        /// <typeparam name="TSecond">The second type in the recordset.</typeparam>
        /// <typeparam name="TThird">The third type in the recordset.</typeparam>
        /// <typeparam name="TFourth">The fourth type in the recordset.</typeparam>
        /// <typeparam name="TFifth">The fifth type in the recordset.</typeparam>
        /// <typeparam name="TSixth">The sixth type in the recordset.</typeparam>
        /// <typeparam name="TReturn">The combined type to return.</typeparam>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="splitOn">The field we should split and read the second object from (default: "Id").</param>
        /// <param name="command">The command to execute.</param>
        /// <param name="map">The function to map row types to the return type.</param>
        /// <returns>An enumerable of <typeparamref name="TReturn"/>.</returns>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Grandfathered")]
        public static Task<IEnumerable<TReturn>> QueryAsync<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TReturn>(this IDbConnection cnn, CommandDefinition command, Func<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TReturn> map, string splitOn = "Id") =>
             MultiMapAsync<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, DontMap, TReturn>(cnn, command, map, splitOn);

        /// <summary>
        /// Perform an asynchronous multi-mapping query with 7 input types.
        /// This returns a single type, combined from the raw types via <paramref name="map"/>.
        /// </summary>
        /// <typeparam name="TFirst">The first type in the recordset.</typeparam>
        /// <typeparam name="TSecond">The second type in the recordset.</typeparam>
        /// <typeparam name="TThird">The third type in the recordset.</typeparam>
        /// <typeparam name="TFourth">The fourth type in the recordset.</typeparam>
        /// <typeparam name="TFifth">The fifth type in the recordset.</typeparam>
        /// <typeparam name="TSixth">The sixth type in the recordset.</typeparam>
        /// <typeparam name="TSeventh">The seventh type in the recordset.</typeparam>
        /// <typeparam name="TReturn">The combined type to return.</typeparam>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="sql">The SQL to execute for this query.</param>
        /// <param name="map">The function to map row types to the return type.</param>
        /// <param name="param">The parameters to use for this query.</param>
        /// <param name="transaction">The transaction to use for this query.</param>
        /// <param name="buffered">Whether to buffer the results in memory.</param>
        /// <param name="splitOn">The field we should split and read the second object from (default: "Id").</param>
        /// <param name="commandTimeout">Number of seconds before command execution timeout.</param>
        /// <param name="commandType">Is it a stored proc or a batch?</param>
        /// <returns>An enumerable of <typeparamref name="TReturn"/>.</returns>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Grandfathered")]
        public static Task<IEnumerable<TReturn>> QueryAsync<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TReturn>(this IDbConnection cnn, string sql, Func<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TReturn> map, object? param = null, IDbTransaction? transaction = null, bool buffered = true, string splitOn = "Id", int? commandTimeout = null, CommandType? commandType = null) =>
            MultiMapAsync<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TReturn>(cnn,
                new CommandDefinition(sql, param, transaction, commandTimeout, commandType, buffered ? CommandFlags.Buffered : CommandFlags.None, default), map, splitOn);

        /// <summary>
        /// Perform an asynchronous multi-mapping query with 7 input types.
        /// This returns a single type, combined from the raw types via <paramref name="map"/>.
        /// </summary>
        /// <typeparam name="TFirst">The first type in the recordset.</typeparam>
        /// <typeparam name="TSecond">The second type in the recordset.</typeparam>
        /// <typeparam name="TThird">The third type in the recordset.</typeparam>
        /// <typeparam name="TFourth">The fourth type in the recordset.</typeparam>
        /// <typeparam name="TFifth">The fifth type in the recordset.</typeparam>
        /// <typeparam name="TSixth">The sixth type in the recordset.</typeparam>
        /// <typeparam name="TSeventh">The seventh type in the recordset.</typeparam>
        /// <typeparam name="TReturn">The combined type to return.</typeparam>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="splitOn">The field we should split and read the second object from (default: "Id").</param>
        /// <param name="command">The command to execute.</param>
        /// <param name="map">The function to map row types to the return type.</param>
        /// <returns>An enumerable of <typeparamref name="TReturn"/>.</returns>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Grandfathered")]
        public static Task<IEnumerable<TReturn>> QueryAsync<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TReturn>(this IDbConnection cnn, CommandDefinition command, Func<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TReturn> map, string splitOn = "Id") =>
            MultiMapAsync<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TReturn>(cnn, command, map, splitOn);

        private static async Task<IEnumerable<TReturn>> MultiMapAsync<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TReturn>(this IDbConnection cnn, CommandDefinition command, Delegate map, string splitOn)
        {
            object? param = command.Parameters;
            var identity = new Identity<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh>(command.CommandText, command.CommandTypeDirect, cnn, typeof(TFirst), param?.GetType());
            var info = GetCacheInfo(identity, param, command.AddToCache);
            bool wasClosed = cnn.State == ConnectionState.Closed;
            try
            {
                if (wasClosed) await cnn.TryOpenAsync(command.CancellationToken).ConfigureAwait(false);
                using var cmd = command.TrySetupAsyncCommand(cnn, info.ParamReader);
                using var reader = await ExecuteReaderWithFlagsFallbackAsync(cmd, wasClosed, CommandBehavior.SequentialAccess | CommandBehavior.SingleResult, command.CancellationToken).ConfigureAwait(false);
                if (!command.Buffered) wasClosed = false; // handing back open reader; rely on command-behavior
                var results = MultiMapImpl<TFirst, TSecond, TThird, TFourth, TFifth, TSixth, TSeventh, TReturn>(null, CommandDefinition.ForCallback(command.Parameters, command.Flags), map, splitOn, reader, identity, true);
                return command.Buffered ? results.ToList() : results;
            }
            finally
            {
                if (wasClosed) cnn.Close();
            }
        }

        /// <summary>
        /// Perform an asynchronous multi-mapping query with an arbitrary number of input types.
        /// This returns a single type, combined from the raw types via <paramref name="map"/>.
        /// </summary>
        /// <typeparam name="TReturn">The combined type to return.</typeparam>
        /// <param name="cnn">The connection to query on.</param>
        /// <param name="sql">The SQL to execute for this query.</param>
        /// <param name="types">Array of types in the recordset.</param>
        /// <param name="map">The function to map row types to the return type.</param>
        /// <param name="param">The parameters to use for this query.</param>
        /// <param name="transaction">The transaction to use for this query.</param>
        /// <param name="buffered">Whether to buffer the results in memory.</param>
        /// <param name="splitOn">The field we should split and read the second object from (default: "Id").</param>
        /// <param name="commandTimeout">Number of seconds before command execution timeout.</param>
        /// <param name="commandType">Is it a stored proc or a batch?</param>
        /// <returns>An enumerable of <typeparamref name="TReturn"/>.</returns>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:Do not add multiple public overloads with optional parameters", Justification = "Grandfathered")]
        public static Task<IEnumerable<TReturn>> QueryAsync<TReturn>(this IDbConnection cnn, string sql, Type[] types, Func<object[], TReturn> map, object? param = null, IDbTransaction? transaction = null, bool buffered = true, string splitOn = "Id", int? commandTimeout = null, CommandType? commandType = null)
        {
            var command = new CommandDefinition(sql, param, transaction, commandTimeout, commandType, buffered ? CommandFlags.Buffered : CommandFlags.None, default);
            return MultiMapAsync(cnn, command, types, map, splitOn);
        }

        private static async Task<IEnumerable<TReturn>> MultiMapAsync<TReturn>(this IDbConnection cnn, CommandDefinition command, Type[] types, Func<object[], TReturn> map, string splitOn)
        {
            if (types.Length < 1)
            {
                throw new ArgumentException("you must provide at least one type to deserialize");
            }

            object? param = command.Parameters;
            var identity = new IdentityWithTypes(command.CommandText, command.CommandTypeDirect, cnn, types[0], param?.GetType(), types);
            var info = GetCacheInfo(identity, param, command.AddToCache);
            bool wasClosed = cnn.State == ConnectionState.Closed;
            try
            {
                if (wasClosed) await cnn.TryOpenAsync(command.CancellationToken).ConfigureAwait(false);
                using var cmd = command.TrySetupAsyncCommand(cnn, info.ParamReader);
                using var reader = await ExecuteReaderWithFlagsFallbackAsync(cmd, wasClosed, CommandBehavior.SequentialAccess | CommandBehavior.SingleResult, command.CancellationToken).ConfigureAwait(false);
                var results = MultiMapImpl(null, default, types, map, splitOn, reader, identity, true);
                return command.Buffered ? results.ToList() : results;
            }
            finally
            {
                if (wasClosed) cnn.Close();
            }
        }

        private static IEnumerable<T> ExecuteReaderSync<T>(DbDataReader reader, Func<DbDataReader, object> func, object? parameters)
        {
            using (reader)
            {
                while (reader.Read())
                {
                    yield return (T)func(reader);
                }
   
Download .txt
gitextract_2tqsalxj/

├── .editorconfig
├── .gitattributes
├── .github/
│   ├── FUNDING.yml
│   ├── ISSUE_TEMPLATE/
│   │   └── bug_report.md
│   └── workflows/
│       ├── cla.yml
│       └── main.yml
├── .gitignore
├── Build.csproj
├── Dapper/
│   ├── CommandDefinition.cs
│   ├── CommandFlags.cs
│   ├── CompiledRegex.cs
│   ├── CustomPropertyTypeMap.cs
│   ├── Dapper.csproj
│   ├── DataTableHandler.cs
│   ├── DbString.cs
│   ├── DefaultTypeMap.cs
│   ├── DynamicParameters.CachedOutputSetters.cs
│   ├── DynamicParameters.ParamInfo.cs
│   ├── DynamicParameters.cs
│   ├── ExplicitConstructorAttribute.cs
│   ├── Extensions.cs
│   ├── FeatureSupport.cs
│   ├── Global.cs
│   ├── NRT.cs
│   ├── Properties/
│   │   └── AssemblyInfo.cs
│   ├── PublicAPI/
│   │   ├── net461/
│   │   │   ├── PublicAPI.Shipped.txt
│   │   │   └── PublicAPI.Unshipped.txt
│   │   ├── net8.0/
│   │   │   ├── PublicAPI.Shipped.txt
│   │   │   └── PublicAPI.Unshipped.txt
│   │   └── netstandard2.0/
│   │       ├── PublicAPI.Shipped.txt
│   │       └── PublicAPI.Unshipped.txt
│   ├── PublicAPI.Shipped.txt
│   ├── PublicAPI.Unshipped.txt
│   ├── SimpleMemberMap.cs
│   ├── SqlDataRecordHandler.cs
│   ├── SqlDataRecordListTVPParameter.cs
│   ├── SqlMapper.Async.cs
│   ├── SqlMapper.CacheInfo.cs
│   ├── SqlMapper.DapperRow.Descriptor.cs
│   ├── SqlMapper.DapperRow.cs
│   ├── SqlMapper.DapperRowMetaObject.cs
│   ├── SqlMapper.DapperTable.cs
│   ├── SqlMapper.DeserializerState.cs
│   ├── SqlMapper.DontMap.cs
│   ├── SqlMapper.GridReader.Async.cs
│   ├── SqlMapper.GridReader.cs
│   ├── SqlMapper.ICustomQueryParameter.cs
│   ├── SqlMapper.IDataReader.cs
│   ├── SqlMapper.IDynamicParameters.cs
│   ├── SqlMapper.IMemberMap.cs
│   ├── SqlMapper.IParameterCallbacks.cs
│   ├── SqlMapper.IParameterLookup.cs
│   ├── SqlMapper.ITypeHandler.cs
│   ├── SqlMapper.ITypeMap.cs
│   ├── SqlMapper.Identity.cs
│   ├── SqlMapper.Link.cs
│   ├── SqlMapper.LiteralToken.cs
│   ├── SqlMapper.Settings.cs
│   ├── SqlMapper.TypeDeserializerCache.cs
│   ├── SqlMapper.TypeHandler.cs
│   ├── SqlMapper.TypeHandlerCache.cs
│   ├── SqlMapper.cs
│   ├── TableValuedParameter.cs
│   ├── TypeExtensions.cs
│   ├── UdtTypeHandler.cs
│   ├── WrappedDataReader.cs
│   ├── WrappedReader.cs
│   └── XmlHandlers.cs
├── Dapper.EntityFramework/
│   ├── Dapper.EntityFramework.csproj
│   ├── DbGeographyHandler.cs
│   ├── DbGeometryHandler.cs
│   ├── Handlers.cs
│   ├── PublicAPI.Shipped.txt
│   └── PublicAPI.Unshipped.txt
├── Dapper.EntityFramework.StrongName/
│   └── Dapper.EntityFramework.StrongName.csproj
├── Dapper.ProviderTools/
│   ├── BulkCopy.cs
│   ├── Dapper.ProviderTools.csproj
│   ├── DbConnectionExtensions.cs
│   ├── DbExceptionExtensions.cs
│   ├── Internal/
│   │   └── DynamicBulkCopy.cs
│   ├── PublicAPI.Shipped.txt
│   └── PublicAPI.Unshipped.txt
├── Dapper.Rainbow/
│   ├── Dapper.Rainbow.csproj
│   ├── Database.Async.cs
│   ├── Database.cs
│   ├── IgnorePropertyAttribute.cs
│   ├── Snapshotter.cs
│   ├── SqlCompactDatabase.cs
│   └── readme.md
├── Dapper.SqlBuilder/
│   ├── Dapper.SqlBuilder.csproj
│   ├── PublicAPI.Shipped.txt
│   ├── PublicAPI.Unshipped.txt
│   ├── Readme.md
│   └── SqlBuilder.cs
├── Dapper.StrongName/
│   └── Dapper.StrongName.csproj
├── Dapper.sln
├── Dapper.sln.DotSettings
├── Dapper.snk
├── Directory.Build.props
├── Directory.Build.targets
├── Directory.Packages.props
├── License.txt
├── NonCLA.md
├── Readme.md
├── appveyor.yml
├── benchmarks/
│   ├── Dapper.Tests.Performance/
│   │   ├── Benchmarks.Belgrade.cs
│   │   ├── Benchmarks.Dapper.cs
│   │   ├── Benchmarks.Dashing.cs
│   │   ├── Benchmarks.EntityFramework.cs
│   │   ├── Benchmarks.EntityFrameworkCore.cs
│   │   ├── Benchmarks.HandCoded.cs
│   │   ├── Benchmarks.Linq2DB.cs
│   │   ├── Benchmarks.Linq2Sql.cs
│   │   ├── Benchmarks.Massive.cs
│   │   ├── Benchmarks.Mighty.cs
│   │   ├── Benchmarks.NHibernate.cs
│   │   ├── Benchmarks.Norm.cs
│   │   ├── Benchmarks.PetaPoco.cs
│   │   ├── Benchmarks.RepoDB.cs
│   │   ├── Benchmarks.ServiceStack.cs
│   │   ├── Benchmarks.SqlMarshal.cs
│   │   ├── Benchmarks.Susanoo.cs
│   │   ├── Benchmarks.XPO.cs
│   │   ├── Benchmarks.cs
│   │   ├── Config.cs
│   │   ├── Dapper.Tests.Performance.csproj
│   │   ├── DapperCacheImpact.cs
│   │   ├── Dashing/
│   │   │   ├── DashingConfiguration.cs
│   │   │   └── Post.cs
│   │   ├── EntityFramework/
│   │   │   └── EFContext.cs
│   │   ├── EntityFrameworkCore/
│   │   │   └── EFCoreContext.cs
│   │   ├── Helpers/
│   │   │   ├── ORMColum.cs
│   │   │   └── ReturnColum.cs
│   │   ├── LegacyTests.cs
│   │   ├── Linq2DB/
│   │   │   ├── ConnectionStringSettings.cs
│   │   │   ├── Linq2DBContext.cs
│   │   │   └── Linq2DbSettings.cs
│   │   ├── Linq2Sql/
│   │   │   ├── DataClasses.dbml
│   │   │   ├── DataClasses.dbml.layout
│   │   │   └── DataClasses.designer.cs
│   │   ├── Massive/
│   │   │   └── Massive.cs
│   │   ├── NHibernate/
│   │   │   ├── NHibernateHelper.cs
│   │   │   ├── Post.hbm.xml
│   │   │   └── hibernate.cfg.xml
│   │   ├── PetaPoco/
│   │   │   └── PetaPoco.cs
│   │   ├── Post.cs
│   │   ├── Program.cs
│   │   ├── SqlDataReaderHelper.cs
│   │   ├── XPO/
│   │   │   └── Post.cs
│   │   └── app.config
│   └── Directory.Build.props
├── build.cmd
├── build.ps1
├── docs/
│   ├── _config.yml
│   ├── dapperplus.md
│   ├── docs.csproj
│   ├── index.md
│   └── readme.md
├── global.json
├── nuget.config
├── signatures/
│   └── version1/
│       └── cla.json
├── tests/
│   ├── Dapper.Tests/
│   │   ├── App.config
│   │   ├── AsyncTests.cs
│   │   ├── ConstructorTests.cs
│   │   ├── Dapper.Tests.csproj
│   │   ├── DataReaderTests.cs
│   │   ├── DateTimeOnlyTests.cs
│   │   ├── DecimalTests.cs
│   │   ├── EnumTests.cs
│   │   ├── Helpers/
│   │   │   ├── Attributes.cs
│   │   │   ├── Common.cs
│   │   │   ├── IsExternalInit.cs
│   │   │   ├── SqlServerTypesLoader.cs
│   │   │   ├── TransactedConnection.cs
│   │   │   └── XunitSkippable.cs
│   │   ├── LiteralTests.cs
│   │   ├── MiscTests.cs
│   │   ├── MultiMapTests.cs
│   │   ├── NullTests.cs
│   │   ├── ParameterTests.cs
│   │   ├── ProcedureTests.cs
│   │   ├── ProviderTests.cs
│   │   ├── Providers/
│   │   │   ├── DuckDBTests.cs
│   │   │   ├── EntityFrameworkTests.cs
│   │   │   ├── FirebirdTests.cs
│   │   │   ├── Linq2SqlTests.cs
│   │   │   ├── MySQLTests.cs
│   │   │   ├── OLDEBTests.cs
│   │   │   ├── PostgresqlTests.cs
│   │   │   ├── SnowflakeTests.cs
│   │   │   └── SqliteTests.cs
│   │   ├── QueryMultipleTests.cs
│   │   ├── SharedTypes/
│   │   │   ├── Address.cs
│   │   │   ├── Bar1.cs
│   │   │   ├── Category.cs
│   │   │   ├── Comment.cs
│   │   │   ├── Dog.cs
│   │   │   ├── Enums.cs
│   │   │   ├── Foo1.cs
│   │   │   ├── HazNameId.cs
│   │   │   ├── Index.cs
│   │   │   ├── Person.cs
│   │   │   ├── Post.cs
│   │   │   ├── Product.cs
│   │   │   ├── ReviewBoard.cs
│   │   │   ├── ShortEnum.cs
│   │   │   ├── SomeType.cs
│   │   │   └── User.cs
│   │   ├── SingleRowTests.cs
│   │   ├── SqlBuilderTests.cs
│   │   ├── TestBase.cs
│   │   ├── TransactionTests.cs
│   │   ├── TupleTests.cs
│   │   ├── TypeHandlerTests.cs
│   │   ├── WrappedReaderTests.cs
│   │   ├── XmlTests.cs
│   │   └── xunit.runner.json
│   ├── Directory.Build.props
│   ├── Directory.Build.targets
│   └── docker-compose.yml
└── version.json
Download .txt
SYMBOL INDEX (2123 symbols across 155 files)

FILE: Dapper.EntityFramework/DbGeographyHandler.cs
  class DbGeographyHandler (line 13) | public class DbGeographyHandler : SqlMapper.TypeHandler<DbGeography>
    method DbGeographyHandler (line 18) | protected DbGeographyHandler() { /* create new */ }
    method SetValue (line 30) | public override void SetValue(IDbDataParameter parameter, DbGeography?...
    method Parse (line 49) | public override DbGeography? Parse(object? value)

FILE: Dapper.EntityFramework/DbGeometryHandler.cs
  class DbGeometryHandler (line 13) | public class DbGeometryHandler : SqlMapper.TypeHandler<DbGeometry>
    method DbGeometryHandler (line 18) | protected DbGeometryHandler() { /* create new */ }
    method SetValue (line 30) | public override void SetValue(IDbDataParameter parameter, DbGeometry? ...
    method Parse (line 49) | public override DbGeometry? Parse(object? value)

FILE: Dapper.EntityFramework/Handlers.cs
  class Handlers (line 6) | public static class Handlers
    method Register (line 11) | public static void Register()

FILE: Dapper.ProviderTools/BulkCopy.cs
  class BulkCopy (line 16) | public abstract class BulkCopy : IDisposable
    method TryCreate (line 21) | public static BulkCopy? TryCreate(DbConnection connection)
    method Create (line 36) | public static BulkCopy Create(DbConnection connection)
    method CreateBcpFactory (line 58) | internal static Func<DbConnection, object>? CreateBcpFactory(Type conn...
    method WriteToServer (line 89) | public abstract void WriteToServer(DataTable source);
    method WriteToServer (line 93) | public abstract void WriteToServer(DataRow[] source);
    method WriteToServer (line 97) | public abstract void WriteToServer(IDataReader source);
    method WriteToServerAsync (line 101) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method WriteToServerAsync (line 106) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method WriteToServerAsync (line 111) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method AddColumnMapping (line 116) | public abstract void AddColumnMapping(string sourceColumn, string dest...
    method AddColumnMapping (line 120) | public abstract void AddColumnMapping(int sourceColumn, int destinatio...
    method Dispose (line 142) | public void Dispose()
    method Dispose (line 151) | protected abstract void Dispose(bool disposing);

FILE: Dapper.ProviderTools/DbConnectionExtensions.cs
  class DbConnectionExtensions (line 12) | public static class DbConnectionExtensions
    method TryGetClientConnectionId (line 17) | public static bool TryGetClientConnectionId(this DbConnection connecti...
    method TryClearAllPools (line 27) | public static bool TryClearAllPools(this DbConnection connection)
    method TryClearPool (line 33) | public static bool TryClearPool(this DbConnection connection)
    class ByTypeHelpers (line 36) | private sealed class ByTypeHelpers
      method TryGetClientConnectionId (line 45) | public bool TryGetClientConnectionId(DbConnection connection, out Gu...
      method TryClearPool (line 56) | public bool TryClearPool(DbConnection connection)
      method TryClearAllPools (line 63) | public bool TryClearAllPools()
      method Get (line 70) | public static ByTypeHelpers Get(Type type)
      method ByTypeHelpers (line 79) | private ByTypeHelpers(Type type)
      method TryGetInstanceProperty (line 109) | private static Func<DbConnection, T>? TryGetInstanceProperty<T>(stri...

FILE: Dapper.ProviderTools/DbExceptionExtensions.cs
  class DbExceptionExtensions (line 12) | public static class DbExceptionExtensions
    method IsNumber (line 17) | public static bool IsNumber(this DbException exception, int number)
    class ByTypeHelpers (line 21) | private sealed class ByTypeHelpers
      method IsNumber (line 27) | public bool IsNumber(DbException exception, int number)
      method Get (line 30) | public static ByTypeHelpers Get(Type type)
      method ByTypeHelpers (line 39) | private ByTypeHelpers(Type type)
      method TryGetInstanceProperty (line 44) | private static Func<DbException, T>? TryGetInstanceProperty<T>(strin...

FILE: Dapper.ProviderTools/Internal/DynamicBulkCopy.cs
  class DynamicBulkCopy (line 9) | internal sealed class DynamicBulkCopy : BulkCopy
    method Create (line 11) | internal static BulkCopy? Create(object? wrapped)
    method DynamicBulkCopy (line 14) | private DynamicBulkCopy(object wrapped)
    method AddColumnMapping (line 27) | public override void AddColumnMapping(string sourceColumn, string dest...
    method AddColumnMapping (line 30) | public override void AddColumnMapping(int sourceColumn, int destinatio...
    method WriteToServer (line 33) | public override void WriteToServer(DataTable source)
    method WriteToServer (line 35) | public override void WriteToServer(DataRow[] source)
    method WriteToServer (line 38) | public override void WriteToServer(IDataReader source)
    method WriteToServerAsync (line 41) | public override Task WriteToServerAsync(DbDataReader source, Cancellat...
    method WriteToServerAsync (line 44) | public override Task WriteToServerAsync(DataTable source, Cancellation...
    method WriteToServerAsync (line 46) | public override Task WriteToServerAsync(DataRow[] source, Cancellation...
    method Dispose (line 49) | protected override void Dispose(bool disposing)

FILE: Dapper.Rainbow/Database.Async.cs
  class Database (line 10) | public abstract partial class Database<TDatabase> where TDatabase : Data...
    class Table (line 12) | public partial class Table<T, TId>
      method InsertAsync (line 19) | public virtual async Task<int?> InsertAsync(dynamic data)
      method UpdateAsync (line 38) | public Task<int> UpdateAsync(TId id, dynamic data)
      method DeleteAsync (line 58) | public async Task<bool> DeleteAsync(TId id) =>
      method GetAsync (line 66) | public Task<T> GetAsync(TId id) =>
      method FirstAsync (line 73) | public virtual Task<T> FirstAsync() =>
      method AllAsync (line 80) | public Task<IEnumerable<T>> AllAsync() =>
    method ExecuteAsync (line 90) | public Task<int> ExecuteAsync(string sql, dynamic param = null) =>
    method QueryAsync (line 100) | public Task<IEnumerable<T>> QueryAsync<T>(string sql, dynamic param = ...
    method QueryFirstOrDefaultAsync (line 110) | public Task<T> QueryFirstOrDefaultAsync<T>(string sql, dynamic param =...
    method QueryAsync (line 128) | public Task<IEnumerable<TReturn>> QueryAsync<TFirst, TSecond, TReturn>...
    method QueryAsync (line 147) | public Task<IEnumerable<TReturn>> QueryAsync<TFirst, TSecond, TThird, ...
    method QueryAsync (line 167) | public Task<IEnumerable<TReturn>> QueryAsync<TFirst, TSecond, TThird, ...
    method QueryAsync (line 188) | public Task<IEnumerable<TReturn>> QueryAsync<TFirst, TSecond, TThird, ...
    method QueryAsync (line 197) | public Task<IEnumerable<dynamic>> QueryAsync(string sql, dynamic param...
    method QueryMultipleAsync (line 208) | public Task<SqlMapper.GridReader> QueryMultipleAsync(string sql, dynam...

FILE: Dapper.Rainbow/Database.cs
  class Database (line 17) | public abstract partial class Database<TDatabase> : IDisposable where TD...
    class Table (line 24) | public partial class Table<T, TId>
      method Table (line 35) | public Table(Database<TDatabase> database, string likelyTableName)
      method Insert (line 58) | public virtual int? Insert(dynamic data)
      method Update (line 77) | public int Update(TId id, dynamic data)
      method Delete (line 97) | public bool Delete(TId id)
      method Get (line 107) | public T Get(TId id)
      method First (line 116) | public virtual T First()
      method All (line 125) | public IEnumerable<T> All()
      method GetParamNames (line 132) | internal static List<string> GetParamNames(object o)
      method Table (line 170) | public Table(Database<TDatabase> database, string likelyTableName)
    class Table (line 163) | public class Table<T> : Table<T, int>
      method Table (line 35) | public Table(Database<TDatabase> database, string likelyTableName)
      method Insert (line 58) | public virtual int? Insert(dynamic data)
      method Update (line 77) | public int Update(TId id, dynamic data)
      method Delete (line 97) | public bool Delete(TId id)
      method Get (line 107) | public T Get(TId id)
      method First (line 116) | public virtual T First()
      method All (line 125) | public IEnumerable<T> All()
      method GetParamNames (line 132) | internal static List<string> GetParamNames(object o)
      method Table (line 170) | public Table(Database<TDatabase> database, string likelyTableName)
    method Init (line 195) | public static TDatabase Init(DbConnection connection, int commandTimeout)
    method InitDatabase (line 204) | internal void InitDatabase(DbConnection connection, int commandTimeout)
    method CreateTableConstructorForTable (line 213) | internal virtual Action<TDatabase> CreateTableConstructorForTable()
    method BeginTransaction (line 223) | public DbTransaction BeginTransaction(IsolationLevel isolation = Isola...
    method CommitTransaction (line 232) | public void CommitTransaction()
    method RollbackTransaction (line 241) | public void RollbackTransaction()
    method CreateTableConstructor (line 252) | protected Action<TDatabase> CreateTableConstructor(Type tableType)
    method CreateTableConstructor (line 262) | protected Action<TDatabase> CreateTableConstructor(params Type[] table...
    method DetermineTableName (line 309) | private string DetermineTableName<T>(string likelyTableName)
    method TableExists (line 324) | private bool TableExists(string name)
    method Execute (line 354) | public int Execute(string sql, dynamic param = null) =>
    method Query (line 365) | public IEnumerable<T> Query<T>(string sql, dynamic param = null, bool ...
    method QueryFirstOrDefault (line 375) | public T QueryFirstOrDefault<T>(string sql, dynamic param = null) =>
    method Query (line 393) | public IEnumerable<TReturn> Query<TFirst, TSecond, TReturn>(string sql...
    method Query (line 412) | public IEnumerable<TReturn> Query<TFirst, TSecond, TThird, TReturn>(st...
    method Query (line 432) | public IEnumerable<TReturn> Query<TFirst, TSecond, TThird, TFourth, TR...
    method Query (line 453) | public IEnumerable<TReturn> Query<TFirst, TSecond, TThird, TFourth, TF...
    method Query (line 463) | public IEnumerable<dynamic> Query(string sql, dynamic param = null, bo...
    method QueryMultiple (line 474) | public SqlMapper.GridReader QueryMultiple(string sql, dynamic param = ...
    method Dispose (line 480) | public virtual void Dispose()

FILE: Dapper.Rainbow/IgnorePropertyAttribute.cs
  class IgnorePropertyAttribute (line 8) | [AttributeUsage(AttributeTargets.Property, AllowMultiple = true)]
    method IgnorePropertyAttribute (line 15) | public IgnorePropertyAttribute(bool ignore)

FILE: Dapper.Rainbow/Snapshotter.cs
  class Snapshotter (line 12) | public static class Snapshotter
    method Start (line 20) | public static Snapshot<T> Start<T>(T obj)
    class Snapshot (line 29) | public class Snapshot<T>
      method Snapshot (line 40) | public Snapshot(T original)
      class Change (line 49) | public class Change
      method Diff (line 65) | public DynamicParameters Diff()
      method Clone (line 70) | private static T Clone(T myObject)
      method Diff (line 76) | private static DynamicParameters Diff(T original, T current)
      method RelevantProperties (line 87) | private static List<PropertyInfo> RelevantProperties()
      method AreEqual (line 99) | private static bool AreEqual<U>(U first, U second)
      method GenerateDiffer (line 106) | private static Func<T, T, List<Change>> GenerateDiffer()
      method GenerateCloner (line 191) | private static Func<T, T> GenerateCloner()

FILE: Dapper.Rainbow/SqlCompactDatabase.cs
  class SqlCompactDatabase (line 12) | public abstract class SqlCompactDatabase<TDatabase> : Database<TDatabase...
    class SqlCompactTable (line 18) | public class SqlCompactTable<T> : Table<T>
      method SqlCompactTable (line 25) | public SqlCompactTable(Database<TDatabase> database, string likelyTa...
      method Insert (line 35) | public override int? Insert(dynamic data)
    method Init (line 59) | public static TDatabase Init(DbConnection connection)
    method CreateTableConstructorForTable (line 66) | internal override Action<TDatabase> CreateTableConstructorForTable()

FILE: Dapper.SqlBuilder/SqlBuilder.cs
  class SqlBuilder (line 8) | public class SqlBuilder
    class Clause (line 13) | private class Clause
      method Clause (line 15) | public Clause(string sql, object? parameters, bool isInclusive)
    class Clauses (line 26) | private class Clauses : List<Clause>
      method Clauses (line 30) | public Clauses(string joiner, string prefix = "", string postfix = "")
      method ResolveClauses (line 37) | public string ResolveClauses(DynamicParameters p)
    class Template (line 58) | public class Template
      method Template (line 65) | public Template(SqlBuilder builder, string sql, dynamic? parameters)
      method ResolveSql (line 74) | private void ResolveSql()
    method AddTemplate (line 109) | public Template AddTemplate(string sql, dynamic? parameters = null) =>
    method AddClause (line 112) | protected SqlBuilder AddClause(string name, string sql, object? parame...
    method Intersect (line 124) | public SqlBuilder Intersect(string sql, dynamic? parameters = null) =>
    method InnerJoin (line 127) | public SqlBuilder InnerJoin(string sql, dynamic? parameters = null) =>
    method LeftJoin (line 130) | public SqlBuilder LeftJoin(string sql, dynamic? parameters = null) =>
    method RightJoin (line 133) | public SqlBuilder RightJoin(string sql, dynamic? parameters = null) =>
    method Where (line 136) | public SqlBuilder Where(string sql, dynamic? parameters = null) =>
    method OrWhere (line 139) | public SqlBuilder OrWhere(string sql, dynamic? parameters = null) =>
    method OrderBy (line 142) | public SqlBuilder OrderBy(string sql, dynamic? parameters = null) =>
    method Select (line 145) | public SqlBuilder Select(string sql, dynamic? parameters = null) =>
    method AddParameters (line 148) | public SqlBuilder AddParameters(dynamic parameters) =>
    method Join (line 151) | public SqlBuilder Join(string sql, dynamic? parameters = null) =>
    method GroupBy (line 154) | public SqlBuilder GroupBy(string sql, dynamic? parameters = null) =>
    method Having (line 157) | public SqlBuilder Having(string sql, dynamic? parameters = null) =>
    method Set (line 160) | public SqlBuilder Set(string sql, dynamic? parameters = null) =>

FILE: Dapper/CommandDefinition.cs
  type CommandDefinition (line 12) | public readonly struct CommandDefinition
    method ForCallback (line 14) | internal static CommandDefinition ForCallback(object? parameters, Comm...
    method OnCompleted (line 19) | internal void OnCompleted()
    method CommandDefinition (line 84) | public CommandDefinition(string commandText, object? parameters = null...
    method InferCommandType (line 98) | internal static CommandType InferCommandType(string sql)
    method CommandDefinition (line 109) | private CommandDefinition(object? parameters, CommandFlags flags) : th...
    method SetupCommand (line 121) | internal IDbCommand SetupCommand(IDbConnection cnn, Action<IDbCommand,...
    method ResetCommandInitCache (line 144) | internal static void ResetCommandInitCache()
    method GetInit (line 147) | private static Action<IDbCommand>? GetInit(Type commandType)
    method GetBasicPropertySetter (line 201) | private static MethodInfo? GetBasicPropertySetter(Type declaringType, ...

FILE: Dapper/CommandFlags.cs
  type CommandFlags (line 8) | [Flags]

FILE: Dapper/CompiledRegex.cs
  class CompiledRegex (line 6) | internal static partial class CompiledRegex
    method LegacyParameterGen (line 19) | [GeneratedRegex(LegacyParameterPattern, RegexOptions.IgnoreCase | Rege...
    method LiteralTokensGen (line 22) | [GeneratedRegex(LiteralTokensPattern, RegexOptions.IgnoreCase | RegexO...
    method PseudoPositionalGen (line 25) | [GeneratedRegex(PseudoPositionalPattern, RegexOptions.IgnoreCase | Reg...
    method WhitespaceOrReservedGen (line 28) | [GeneratedRegex(WhitespaceOrReservedPattern, RegexOptions.IgnoreCase, ...

FILE: Dapper/CustomPropertyTypeMap.cs
  class CustomPropertyTypeMap (line 9) | public sealed class CustomPropertyTypeMap : SqlMapper.ITypeMap
    method CustomPropertyTypeMap (line 19) | public CustomPropertyTypeMap(Type type, Func<Type, string, PropertyInf...
    method FindConstructor (line 31) | public ConstructorInfo? FindConstructor(string[] names, Type[] types) =>
    method FindExplicitConstructor (line 38) | public ConstructorInfo? FindExplicitConstructor() => null;
    method GetConstructorParameter (line 46) | public SqlMapper.IMemberMap GetConstructorParameter(ConstructorInfo co...
    method GetMember (line 56) | public SqlMapper.IMemberMap? GetMember(string columnName)

FILE: Dapper/DataTableHandler.cs
  class DataTableHandler (line 5) | internal sealed class DataTableHandler : SqlMapper.ITypeHandler
    method Parse (line 7) | public object Parse(Type destinationType, object value)
    method SetValue (line 12) | public void SetValue(IDbDataParameter parameter, object value)

FILE: Dapper/DbString.cs
  class DbString (line 9) | public sealed class DbString : SqlMapper.ICustomQueryParameter
    method DbString (line 26) | public DbString()
    method DbString (line 35) | public DbString(string? value, int length = -1)
    method ToString (line 62) | public override string ToString() => Value is null
    method AddParameter (line 71) | public void AddParameter(IDbCommand command, string name)

FILE: Dapper/DefaultTypeMap.cs
  class DefaultTypeMap (line 11) | public sealed class DefaultTypeMap : SqlMapper.ITypeMap
    method DefaultTypeMap (line 20) | public DefaultTypeMap(Type type)
    method GetPropertySetterOrThrow (line 30) | internal static MethodInfo GetPropertySetterOrThrow(PropertyInfo prope...
    method GetPropertySetter (line 36) | internal static MethodInfo? GetPropertySetter(PropertyInfo propertyInf...
    method GetSettableProps (line 49) | internal static List<PropertyInfo> GetSettableProps(Type t)
    method GetSettableFields (line 57) | internal static List<FieldInfo> GetSettableFields(Type t)
    method FindConstructor (line 68) | public ConstructorInfo? FindConstructor(string[] names, Type[] types)
    method FindExplicitConstructor (line 115) | public ConstructorInfo? FindExplicitConstructor()
    method GetConstructorParameter (line 134) | public SqlMapper.IMemberMap GetConstructorParameter(ConstructorInfo co...
    method GetMember (line 147) | public SqlMapper.IMemberMap? GetMember(string columnName)
    method MatchFirstOrDefault (line 185) | static T? MatchFirstOrDefault<T>(IList<T>? members, string? name, Func...
    method EqualsCI (line 246) | internal static bool EqualsCI(string? x, string? y)
    method EqualsCIU (line 248) | internal static bool EqualsCIU(string? x, string? y)

FILE: Dapper/DynamicParameters.CachedOutputSetters.cs
  class DynamicParameters (line 5) | public partial class DynamicParameters
    class CachedOutputSetters (line 9) | internal static class CachedOutputSetters<T>

FILE: Dapper/DynamicParameters.ParamInfo.cs
  class DynamicParameters (line 6) | public partial class DynamicParameters
    class ParamInfo (line 8) | private sealed class ParamInfo

FILE: Dapper/DynamicParameters.cs
  class DynamicParameters (line 14) | public partial class DynamicParameters : SqlMapper.IDynamicParameters, S...
    method DynamicParameters (line 27) | public DynamicParameters()
    method DynamicParameters (line 36) | public DynamicParameters(object? template)
    method AddDynamicParams (line 47) | public void AddDynamicParams(object? param)
    method Add (line 97) | public void Add(string name, object? value, DbType? dbType, ParameterD...
    method Add (line 119) | public void Add(string name, object? value = null, DbType? dbType = nu...
    method Clean (line 133) | private static string Clean(string name)
    method AddParameters (line 148) | void SqlMapper.IDynamicParameters.AddParameters(IDbCommand command, Sq...
    method ShouldSetDbType (line 158) | internal static bool ShouldSetDbType(DbType? dbType)
    method ShouldSetDbType (line 161) | internal static bool ShouldSetDbType(DbType dbType)
    method AddParameters (line 169) | protected void AddParameters(IDbCommand command, SqlMapper.Identity id...
    method Get (line 316) | public T Get<T>(string name)
    method Output (line 342) | public DynamicParameters Output<T>(T target, Expression<Func<T, object...
    method OnCompleted (line 492) | void SqlMapper.IParameterCallbacks.OnCompleted()

FILE: Dapper/ExplicitConstructorAttribute.cs
  class ExplicitConstructorAttribute (line 11) | [AttributeUsage(AttributeTargets.Constructor | AttributeTargets.Method, ...

FILE: Dapper/Extensions.cs
  class Extensions (line 6) | internal static class Extensions
    method CastResult (line 12) | internal static Task<TTo> CastResult<TFrom, TTo>(this Task<TFrom> task)
    method OnTaskCompleted (line 25) | private static void OnTaskCompleted<TFrom, TTo>(Task<TFrom> completedT...

FILE: Dapper/FeatureSupport.cs
  class FeatureSupport (line 9) | internal class FeatureSupport
    method Get (line 20) | public static FeatureSupport Get(IDbConnection? connection)
    method FeatureSupport (line 28) | private FeatureSupport(bool arrays)

FILE: Dapper/NRT.cs
  class NotNullWhenAttribute (line 4) | [AttributeUsage(AttributeTargets.Parameter, Inherited = false)]
    method NotNullWhenAttribute (line 7) | public NotNullWhenAttribute(bool returnValue) => ReturnValue = returnV...

FILE: Dapper/Properties/AssemblyInfo.cs
  class SkipLocalsInitAttribute (line 6) | [AttributeUsage(AttributeTargets.Module | AttributeTargets.Class | Attri...
  class MemberNotNullAttribute (line 11) | [AttributeUsage(AttributeTargets.Method | AttributeTargets.Property, Inh...
    method MemberNotNullAttribute (line 14) | public MemberNotNullAttribute(string member) {}
    method MemberNotNullAttribute (line 15) | public MemberNotNullAttribute(params string[] members) {}

FILE: Dapper/SimpleMemberMap.cs
  class SimpleMemberMap (line 9) | internal sealed class SimpleMemberMap : SqlMapper.IMemberMap
    method SimpleMemberMap (line 16) | public SimpleMemberMap(string columnName, PropertyInfo property)
    method SimpleMemberMap (line 27) | public SimpleMemberMap(string columnName, FieldInfo field)
    method SimpleMemberMap (line 38) | public SimpleMemberMap(string columnName, ParameterInfo parameter)

FILE: Dapper/SqlDataRecordHandler.cs
  class SqlDataRecordHandler (line 7) | internal sealed class SqlDataRecordHandler<T> : SqlMapper.ITypeHandler
    method Parse (line 10) | public object Parse(Type destinationType, object value)
    method SetValue (line 15) | public void SetValue(IDbDataParameter parameter, object value)

FILE: Dapper/SqlDataRecordListTVPParameter.cs
  class SqlDataRecordListTVPParameter (line 14) | internal sealed class SqlDataRecordListTVPParameter<T> : SqlMapper.ICust...
    method SqlDataRecordListTVPParameter (line 24) | public SqlDataRecordListTVPParameter(IEnumerable<T> data, string typeN...
    method AddParameter (line 30) | void SqlMapper.ICustomQueryParameter.AddParameter(IDbCommand command, ...
    method Set (line 38) | internal static void Set(IDbDataParameter parameter, IEnumerable<T>? d...
  class StructuredHelper (line 44) | static class StructuredHelper
    method GetUDT (line 48) | private static Action<IDbDataParameter, string> GetUDT(Type type)
    method GetTVP (line 50) | private static Action<IDbDataParameter, string?> GetTVP(Type type)
    method SlowGetHelper (line 53) | static Action<IDbDataParameter, string?> SlowGetHelper(Type type, Hash...
    method CreateFor (line 67) | static Action<IDbDataParameter, string?> CreateFor(Type type, string n...
    method ConfigureUDT (line 101) | internal static void ConfigureUDT(IDbDataParameter parameter, string t...
    method ConfigureTVP (line 103) | internal static void ConfigureTVP(IDbDataParameter parameter, string? ...

FILE: Dapper/SqlMapper.Async.cs
  class SqlMapper (line 14) | public static partial class SqlMapper
    method QueryAsync (line 26) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QueryAsync (line 36) | public static Task<IEnumerable<dynamic>> QueryAsync(this IDbConnection...
    method QueryFirstAsync (line 45) | public static Task<dynamic> QueryFirstAsync(this IDbConnection cnn, Co...
    method QueryFirstOrDefaultAsync (line 54) | public static Task<dynamic?> QueryFirstOrDefaultAsync(this IDbConnecti...
    method QuerySingleAsync (line 63) | public static Task<dynamic> QuerySingleAsync(this IDbConnection cnn, C...
    method QuerySingleOrDefaultAsync (line 72) | public static Task<dynamic?> QuerySingleOrDefaultAsync(this IDbConnect...
    method QueryAsync (line 89) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QueryFirstAsync (line 103) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QueryFirstOrDefaultAsync (line 117) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QuerySingleAsync (line 131) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QuerySingleOrDefaultAsync (line 145) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QueryFirstAsync (line 158) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QueryFirstOrDefaultAsync (line 171) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QuerySingleAsync (line 184) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QuerySingleOrDefaultAsync (line 197) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QueryAsync (line 212) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QueryFirstAsync (line 230) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QueryFirstOrDefaultAsync (line 247) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QuerySingleAsync (line 264) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QuerySingleOrDefaultAsync (line 281) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QueryAsync (line 298) | public static Task<IEnumerable<T>> QueryAsync<T>(this IDbConnection cn...
    method QueryAsync (line 307) | public static Task<IEnumerable<object>> QueryAsync(this IDbConnection ...
    method QueryFirstAsync (line 316) | public static Task<object> QueryFirstAsync(this IDbConnection cnn, Typ...
    method QueryFirstAsync (line 325) | public static Task<T> QueryFirstAsync<T>(this IDbConnection cnn, Comma...
    method QueryFirstOrDefaultAsync (line 334) | public static Task<object?> QueryFirstOrDefaultAsync(this IDbConnectio...
    method QueryFirstOrDefaultAsync (line 343) | public static Task<T?> QueryFirstOrDefaultAsync<T>(this IDbConnection ...
    method QuerySingleAsync (line 352) | public static Task<object> QuerySingleAsync(this IDbConnection cnn, Ty...
    method QuerySingleAsync (line 361) | public static Task<T> QuerySingleAsync<T>(this IDbConnection cnn, Comm...
    method QuerySingleOrDefaultAsync (line 370) | public static Task<object?> QuerySingleOrDefaultAsync(this IDbConnecti...
    method QuerySingleOrDefaultAsync (line 379) | public static Task<T?> QuerySingleOrDefaultAsync<T>(this IDbConnection...
    method ExecuteReaderWithFlagsFallbackAsync (line 382) | private static Task<DbDataReader> ExecuteReaderWithFlagsFallbackAsync(...
    method TryOpenAsync (line 395) | private static Task TryOpenAsync(this IDbConnection cnn, CancellationT...
    method TrySetupAsyncCommand (line 410) | private static DbCommand TrySetupAsyncCommand(this CommandDefinition c...
    method QueryAsync (line 422) | private static async Task<IEnumerable<T>> QueryAsync<T>(this IDbConnec...
    method QueryRowAsync (line 477) | private static async Task<T> QueryRowAsync<T>(this IDbConnection cnn, ...
    method ExecuteAsync (line 526) | public static Task<int> ExecuteAsync(this IDbConnection cnn, string sq...
    method ExecuteAsync (line 535) | public static Task<int> ExecuteAsync(this IDbConnection cnn, CommandDe...
    type AsyncExecState (line 549) | private readonly struct AsyncExecState
      method AsyncExecState (line 553) | public AsyncExecState(DbCommand command, Task<int> task)
    method ExecuteMultiImplAsync (line 560) | private static async Task<int> ExecuteMultiImplAsync(IDbConnection cnn...
    method ExecuteImplAsync (line 654) | private static async Task<int> ExecuteImplAsync(IDbConnection cnn, Com...
    method QueryAsync (line 690) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QueryAsync (line 707) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QueryAsync (line 729) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QueryAsync (line 747) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QueryAsync (line 770) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QueryAsync (line 789) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QueryAsync (line 813) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QueryAsync (line 833) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QueryAsync (line 858) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QueryAsync (line 879) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QueryAsync (line 905) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QueryAsync (line 927) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method MultiMapAsync (line 931) | private static async Task<IEnumerable<TReturn>> MultiMapAsync<TFirst, ...
    method QueryAsync (line 968) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method MultiMapAsync (line 975) | private static async Task<IEnumerable<TReturn>> MultiMapAsync<TReturn>...
    method ExecuteReaderSync (line 1000) | private static IEnumerable<T> ExecuteReaderSync<T>(DbDataReader reader...
    method QueryMultipleAsync (line 1022) | public static Task<GridReader> QueryMultipleAsync(this IDbConnection c...
    method QueryMultipleAsync (line 1030) | public static async Task<GridReader> QueryMultipleAsync(this IDbConnec...
    method ExecuteReaderAsync (line 1096) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method ExecuteReaderAsync (line 1109) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method ExecuteReaderAsync (line 1123) | public static Task<IDataReader> ExecuteReaderAsync(this IDbConnection ...
    method ExecuteReaderAsync (line 1131) | public static Task<DbDataReader> ExecuteReaderAsync(this DbConnection ...
    method ExecuteReaderAsync (line 1145) | public static Task<IDataReader> ExecuteReaderAsync(this IDbConnection ...
    method ExecuteReaderAsync (line 1154) | public static Task<DbDataReader> ExecuteReaderAsync(this DbConnection ...
    method ExecuteWrappedReaderImplAsync (line 1157) | private static async Task<DbDataReader> ExecuteWrappedReaderImplAsync(...
    method ExecuteScalarAsync (line 1189) | public static Task<object?> ExecuteScalarAsync(this IDbConnection cnn,...
    method ExecuteScalarAsync (line 1203) | public static Task<T?> ExecuteScalarAsync<T>(this IDbConnection cnn, s...
    method ExecuteScalarAsync (line 1212) | public static Task<object?> ExecuteScalarAsync(this IDbConnection cnn,...
    method ExecuteScalarAsync (line 1222) | public static Task<T?> ExecuteScalarAsync<T>(this IDbConnection cnn, C...
    method ExecuteScalarImplAsync (line 1225) | private static async Task<T?> ExecuteScalarImplAsync<T>(IDbConnection ...
    method QueryUnbufferedAsync (line 1265) | public static IAsyncEnumerable<dynamic> QueryUnbufferedAsync(this DbCo...
    method QueryUnbufferedAsync (line 1285) | public static IAsyncEnumerable<T> QueryUnbufferedAsync<T>(this DbConne...
    method QueryUnbufferedAsync (line 1291) | private static IAsyncEnumerable<T> QueryUnbufferedAsync<T>(this IDbCon...

FILE: Dapper/SqlMapper.CacheInfo.cs
  class SqlMapper (line 8) | public static partial class SqlMapper
    class CacheInfo (line 10) | private class CacheInfo
      method GetHitCount (line 16) | public int GetHitCount() { return Interlocked.CompareExchange(ref hi...
      method RecordHit (line 17) | public void RecordHit() { Interlocked.Increment(ref hitCount); }

FILE: Dapper/SqlMapper.DapperRow.Descriptor.cs
  class SqlMapper (line 7) | public static partial class SqlMapper
    class DapperRow (line 9) | [TypeDescriptionProvider(typeof(DapperRowTypeDescriptionProvider))]
      class DapperRowTypeDescriptionProvider (line 12) | private sealed class DapperRowTypeDescriptionProvider : TypeDescript...
        method GetExtendedTypeDescriptor (line 14) | public override ICustomTypeDescriptor GetExtendedTypeDescriptor(ob...
        method GetTypeDescriptor (line 16) | public override ICustomTypeDescriptor GetTypeDescriptor(Type objec...
      class DapperRowTypeDescriptor (line 36) | private sealed class DapperRowTypeDescriptor : ICustomTypeDescriptor
        method DapperRowTypeDescriptor (line 39) | public DapperRowTypeDescriptor(object instance)
        method GetAttributes (line 42) | AttributeCollection ICustomTypeDescriptor.GetAttributes()
        method GetClassName (line 45) | string ICustomTypeDescriptor.GetClassName() => typeof(DapperRow).F...
        method GetComponentName (line 47) | string ICustomTypeDescriptor.GetComponentName() => null!;
        method GetConverter (line 50) | TypeConverter ICustomTypeDescriptor.GetConverter() => s_converter;
        method GetDefaultEvent (line 52) | EventDescriptor ICustomTypeDescriptor.GetDefaultEvent() => null!;
        method GetDefaultProperty (line 54) | PropertyDescriptor ICustomTypeDescriptor.GetDefaultProperty() => n...
        method GetEditor (line 56) | object ICustomTypeDescriptor.GetEditor(Type editorBaseType) => null!;
        method GetEvents (line 58) | EventDescriptorCollection ICustomTypeDescriptor.GetEvents() => Eve...
        method GetEvents (line 60) | EventDescriptorCollection ICustomTypeDescriptor.GetEvents(Attribut...
        method GetProperties (line 62) | internal static PropertyDescriptorCollection GetProperties(DapperR...
        method GetProperties (line 63) | internal static PropertyDescriptorCollection GetProperties(DapperT...
        method GetProperties (line 76) | PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties()...
        method GetProperties (line 78) | PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties(A...
        method GetPropertyOwner (line 80) | object ICustomTypeDescriptor.GetPropertyOwner(PropertyDescriptor? ...
      class RowBoundPropertyDescriptor (line 83) | private sealed class RowBoundPropertyDescriptor : PropertyDescriptor
        method RowBoundPropertyDescriptor (line 87) | public RowBoundPropertyDescriptor(Type type, string name, int inde...
        method CanResetValue (line 92) | public override bool CanResetValue(object component) => true;
        method ResetValue (line 93) | public override void ResetValue(object component) => ((DapperRow)c...
        method ShouldSerializeValue (line 95) | public override bool ShouldSerializeValue(object component) => ((D...
        method GetValue (line 98) | public override object GetValue(object? component)
        method SetValue (line 100) | public override void SetValue(object? component, object? value)

FILE: Dapper/SqlMapper.DapperRow.cs
  class SqlMapper (line 8) | public static partial class SqlMapper
    class DapperRow (line 10) | private sealed partial class DapperRow
      method DapperRow (line 17) | public DapperRow(DapperTable table, object?[] values)
      class DeadValue (line 23) | private sealed class DeadValue
        method DeadValue (line 26) | private DeadValue() { /* hiding constructor */ }
      method TryGetValue (line 42) | public bool TryGetValue(string key, out object? value)
      method TryGetValue (line 45) | internal bool TryGetValue(int index, out object? value)
      method ToString (line 62) | public override string ToString()
      method GetEnumerator (line 82) | public IEnumerator<KeyValuePair<string, object?>> GetEnumerator()
      method GetEnumerator (line 95) | IEnumerator IEnumerable.GetEnumerator()
      method Add (line 102) | void ICollection<KeyValuePair<string, object?>>.Add(KeyValuePair<str...
      method Clear (line 108) | void ICollection<KeyValuePair<string, object?>>.Clear()
      method Contains (line 114) | bool ICollection<KeyValuePair<string, object?>>.Contains(KeyValuePai...
      method CopyTo (line 119) | void ICollection<KeyValuePair<string, object?>>.CopyTo(KeyValuePair<...
      method Remove (line 127) | bool ICollection<KeyValuePair<string, object?>>.Remove(KeyValuePair<...
      method ContainsKey (line 138) | bool IDictionary<string, object?>.ContainsKey(string key)
      method Add (line 145) | void IDictionary<string, object?>.Add(string key, object? value)
      method Remove (line 150) | bool IDictionary<string, object?>.Remove(string key)
      method Remove (line 153) | internal bool Remove(int index)
      method SetValue (line 166) | public object? SetValue(string key, object? value)
      method SetValue (line 171) | private object? SetValue(string key, object? value, bool isAdd)
      method SetValue (line 186) | internal object? SetValue(int index, object? value)
      method ContainsKey (line 226) | bool IReadOnlyDictionary<string, object?>.ContainsKey(string key)

FILE: Dapper/SqlMapper.DapperRowMetaObject.cs
  class SqlMapper (line 6) | public static partial class SqlMapper
    class DapperRow (line 8) | private sealed partial class DapperRow : System.Dynamic.IDynamicMetaOb...
      method GetMetaObject (line 10) | System.Dynamic.DynamicMetaObject System.Dynamic.IDynamicMetaObjectPr...
    class DapperRowMetaObject (line 17) | private sealed class DapperRowMetaObject : System.Dynamic.DynamicMetaO...
      method DapperRowMetaObject (line 22) | public DapperRowMetaObject(
      method DapperRowMetaObject (line 30) | public DapperRowMetaObject(
      method CallMethod (line 39) | private System.Dynamic.DynamicMetaObject CallMethod(
      method BindGetMember (line 54) | public override System.Dynamic.DynamicMetaObject BindGetMember(Syste...
      method BindInvokeMember (line 67) | public override System.Dynamic.DynamicMetaObject BindInvokeMember(Sy...
      method BindSetMember (line 79) | public override System.Dynamic.DynamicMetaObject BindSetMember(Syste...
      method GetDynamicMemberNames (line 92) | public override IEnumerable<string> GetDynamicMemberNames()

FILE: Dapper/SqlMapper.DapperTable.cs
  class SqlMapper (line 6) | public static partial class SqlMapper
    class DapperTable (line 8) | private sealed class DapperTable
      method DapperTable (line 15) | public DapperTable(string[] fieldNames)
      method IndexOfName (line 28) | internal int IndexOfName(string name)
      method AddField (line 33) | internal int AddField(string name)
      method FieldExists (line 44) | internal bool FieldExists(string key) => key is not null && fieldNam...

FILE: Dapper/SqlMapper.DeserializerState.cs
  class SqlMapper (line 7) | public static partial class SqlMapper
    type DeserializerState (line 9) | private readonly struct DeserializerState
      method DeserializerState (line 14) | public DeserializerState(int hash, Func<DbDataReader, object> func)

FILE: Dapper/SqlMapper.DontMap.cs
  class SqlMapper (line 3) | public static partial class SqlMapper
    class DontMap (line 8) | private class DontMap { /* hiding constructor */ }

FILE: Dapper/SqlMapper.GridReader.Async.cs
  class SqlMapper (line 10) | public static partial class SqlMapper
    class GridReader (line 12) | public partial class GridReader
      method ReadAsync (line 20) | public Task<IEnumerable<dynamic>> ReadAsync(bool buffered = true) =>...
      method ReadFirstAsync (line 26) | public Task<dynamic> ReadFirstAsync() => ReadRowAsyncImpl<dynamic>(t...
      method ReadFirstOrDefaultAsync (line 32) | public Task<dynamic?> ReadFirstOrDefaultAsync() => ReadRowAsyncImpl<...
      method ReadSingleAsync (line 38) | public Task<dynamic> ReadSingleAsync() => ReadRowAsyncImpl<dynamic>(...
      method ReadSingleOrDefaultAsync (line 44) | public Task<dynamic?> ReadSingleOrDefaultAsync() => ReadRowAsyncImpl...
      method ReadAsync (line 52) | public Task<IEnumerable<object>> ReadAsync(Type type, bool buffered ...
      method ReadFirstAsync (line 63) | public Task<object> ReadFirstAsync(Type type)
      method ReadFirstOrDefaultAsync (line 74) | public Task<object?> ReadFirstOrDefaultAsync(Type type)
      method ReadSingleAsync (line 85) | public Task<object> ReadSingleAsync(Type type)
      method ReadSingleOrDefaultAsync (line 96) | public Task<object?> ReadSingleOrDefaultAsync(Type type)
      method ReadAsync (line 107) | public Task<IEnumerable<T>> ReadAsync<T>(bool buffered = true) => Re...
      method ReadFirstAsync (line 113) | public Task<T> ReadFirstAsync<T>() => ReadRowAsyncImpl<T>(typeof(T),...
      method ReadFirstOrDefaultAsync (line 119) | public Task<T?> ReadFirstOrDefaultAsync<T>() => ReadRowAsyncImpl<T?>...
      method ReadSingleAsync (line 125) | public Task<T> ReadSingleAsync<T>() => ReadRowAsyncImpl<T>(typeof(T)...
      method ReadSingleOrDefaultAsync (line 131) | public Task<T?> ReadSingleOrDefaultAsync<T>() => ReadRowAsyncImpl<T?...
      method OnAfterGridAsync (line 136) | protected async Task OnAfterGridAsync(int index)
      method ReadAsyncImpl (line 167) | private Task<IEnumerable<T>> ReadAsyncImpl<T>(Type type, bool buffered)
      method ValidateAndMarkConsumed (line 181) | private Func<DbDataReader, object> ValidateAndMarkConsumed(Type type...
      method ReadRowAsyncImpl (line 197) | private async Task<T> ReadRowAsyncImpl<T>(Type type, Row row)
      method ReadBufferedAsync (line 228) | private async Task<IEnumerable<T>> ReadBufferedAsync<T>(int index, F...
      method ReadUnbufferedAsync (line 249) | public IAsyncEnumerable<T> ReadUnbufferedAsync<T>() => ReadAsyncUnbu...
      method ReadUnbufferedAsync (line 254) | public IAsyncEnumerable<dynamic> ReadUnbufferedAsync() => ReadAsyncU...
      method ReadAsyncUnbufferedImpl (line 256) | private IAsyncEnumerable<T> ReadAsyncUnbufferedImpl<T>(Type type)
      method ReadUnbufferedAsync (line 262) | private async IAsyncEnumerable<T> ReadUnbufferedAsync<T>(int index, ...
      method DisposeAsync (line 281) | public async ValueTask DisposeAsync()

FILE: Dapper/SqlMapper.GridReader.cs
  class SqlMapper (line 13) | public static partial class SqlMapper
    class GridReader (line 18) | public partial class GridReader : IDisposable
      method GridReader (line 30) | [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
      method GridReader (line 42) | internal GridReader(IDbCommand command, DbDataReader reader, Identit...
      method CreateIdentity (line 50) | private Identity CreateIdentity()
      method Read (line 65) | public IEnumerable<dynamic> Read(bool buffered = true) => ReadImpl<d...
      method ReadFirst (line 71) | public dynamic ReadFirst() => ReadRow<dynamic>(typeof(DapperRow), Ro...
      method ReadFirstOrDefault (line 77) | public dynamic? ReadFirstOrDefault() => ReadRow<dynamic>(typeof(Dapp...
      method ReadSingle (line 83) | public dynamic ReadSingle() => ReadRow<dynamic>(typeof(DapperRow), R...
      method ReadSingleOrDefault (line 89) | public dynamic? ReadSingleOrDefault() => ReadRow<dynamic>(typeof(Dap...
      method Read (line 96) | public IEnumerable<T> Read<T>(bool buffered = true) => ReadImpl<T>(t...
      method ReadFirst (line 102) | public T ReadFirst<T>() => ReadRow<T>(typeof(T), Row.First);
      method ReadFirstOrDefault (line 108) | public T? ReadFirstOrDefault<T>() => ReadRow<T>(typeof(T), Row.First...
      method ReadSingle (line 114) | public T ReadSingle<T>() => ReadRow<T>(typeof(T), Row.Single);
      method ReadSingleOrDefault (line 120) | public T? ReadSingleOrDefault<T>() => ReadRow<T>(typeof(T), Row.Sing...
      method Read (line 128) | public IEnumerable<object> Read(Type type, bool buffered = true)
      method ReadFirst (line 139) | public object ReadFirst(Type type)
      method ReadFirstOrDefault (line 150) | public object? ReadFirstOrDefault(Type type)
      method ReadSingle (line 161) | public object ReadSingle(Type type)
      method ReadSingleOrDefault (line 172) | public object? ReadSingleOrDefault(Type type)
      method OnBeforeGrid (line 183) | protected int OnBeforeGrid()
      method ReadImpl (line 191) | private IEnumerable<T> ReadImpl<T>(Type type, bool buffered)
      method ReadRow (line 208) | private T ReadRow<T>(Type type, Row row)
      method MultiReadInternal (line 239) | private IEnumerable<TReturn> MultiReadInternal<TFirst, TSecond, TThi...
      method MultiReadInternal (line 257) | private IEnumerable<TReturn> MultiReadInternal<TReturn>(Type[] types...
      method Read (line 283) | public IEnumerable<TReturn> Read<TFirst, TSecond, TReturn>(Func<TFir...
      method Read (line 299) | public IEnumerable<TReturn> Read<TFirst, TSecond, TThird, TReturn>(F...
      method Read (line 316) | public IEnumerable<TReturn> Read<TFirst, TSecond, TThird, TFourth, T...
      method Read (line 334) | public IEnumerable<TReturn> Read<TFirst, TSecond, TThird, TFourth, T...
      method Read (line 353) | public IEnumerable<TReturn> Read<TFirst, TSecond, TThird, TFourth, T...
      method Read (line 373) | public IEnumerable<TReturn> Read<TFirst, TSecond, TThird, TFourth, T...
      method Read (line 387) | public IEnumerable<TReturn> Read<TReturn>(Type[] types, Func<object[...
      method ReadDeferred (line 393) | private IEnumerable<T> ReadDeferred<T>(int index, Func<DbDataReader,...
      method OnAfterGrid (line 440) | protected void OnAfterGrid(int index)
      method Dispose (line 469) | public void Dispose()
      method ConvertTo (line 485) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: Dapper/SqlMapper.ICustomQueryParameter.cs
  class SqlMapper (line 5) | public static partial class SqlMapper
    type ICustomQueryParameter (line 10) | public interface ICustomQueryParameter
      method AddParameter (line 17) | void AddParameter(IDbCommand command, string name);

FILE: Dapper/SqlMapper.IDataReader.cs
  class SqlMapper (line 8) | public static partial class SqlMapper
    method Parse (line 15) | public static IEnumerable<T> Parse<T>(this IDataReader reader)
    method Parse (line 43) | public static IEnumerable<object> Parse(this IDataReader reader, Type ...
    method Parse (line 60) | public static IEnumerable<dynamic> Parse(this IDataReader reader)
    method GetRowParser (line 84) | [Obsolete(nameof(DbDataReader) + " API should be preferred")]
    method GetRowParser (line 103) | public static Func<DbDataReader, object> GetRowParser(this DbDataReade...
    method GetRowParser (line 111) | [Obsolete(nameof(DbDataReader) + " API should be preferred")]
    method GetRowParser (line 179) | public static Func<DbDataReader, T> GetRowParser<T>(this DbDataReader ...

FILE: Dapper/SqlMapper.IDynamicParameters.cs
  class SqlMapper (line 5) | public static partial class SqlMapper
    type IDynamicParameters (line 10) | public interface IDynamicParameters
      method AddParameters (line 17) | void AddParameters(IDbCommand command, Identity identity);

FILE: Dapper/SqlMapper.IMemberMap.cs
  class SqlMapper (line 6) | public static partial class SqlMapper
    type IMemberMap (line 11) | public interface IMemberMap

FILE: Dapper/SqlMapper.IParameterCallbacks.cs
  class SqlMapper (line 3) | public static partial class SqlMapper
    type IParameterCallbacks (line 8) | public interface IParameterCallbacks : IDynamicParameters
      method OnCompleted (line 13) | void OnCompleted();

FILE: Dapper/SqlMapper.IParameterLookup.cs
  class SqlMapper (line 3) | public static partial class SqlMapper
    type IParameterLookup (line 8) | public interface IParameterLookup : IDynamicParameters

FILE: Dapper/SqlMapper.ITypeHandler.cs
  class SqlMapper (line 6) | public static partial class SqlMapper
    type ITypeHandler (line 11) | public interface ITypeHandler
      method SetValue (line 18) | void SetValue(IDbDataParameter parameter, object value);
      method Parse (line 26) | object? Parse(Type destinationType, object value);

FILE: Dapper/SqlMapper.ITypeMap.cs
  class SqlMapper (line 6) | public static partial class SqlMapper
    type ITypeMap (line 11) | public interface ITypeMap
      method FindConstructor (line 19) | ConstructorInfo? FindConstructor(string[] names, Type[] types);
      method FindExplicitConstructor (line 28) | ConstructorInfo? FindExplicitConstructor();
      method GetConstructorParameter (line 36) | IMemberMap? GetConstructorParameter(ConstructorInfo constructor, str...
      method GetMember (line 43) | IMemberMap? GetMember(string columnName);

FILE: Dapper/SqlMapper.Identity.cs
  class SqlMapper (line 8) | public static partial class SqlMapper
    class Identity (line 10) | internal sealed class Identity<TFirst, TSecond, TThird, TFourth, TFift...
      method Identity (line 15) | internal Identity(string sql, CommandType? commandType, string conne...
      method Identity (line 18) | internal Identity(string sql, CommandType? commandType, IDbConnectio...
      method CountNonTrivial (line 22) | static int CountNonTrivial(out int hashCode)
      method GetType (line 43) | internal override Type GetType(int index) => index switch {
      method GetType (line 94) | internal virtual Type GetType(int index) => throw new IndexOutOfRang...
      method ForGrid (line 97) | internal Identity ForGrid<TFirst, TSecond, TThird, TFourth, TFifth, ...
      method ForGrid (line 100) | internal Identity ForGrid(Type primaryType, int gridIndex) =>
      method ForGrid (line 103) | internal Identity ForGrid(Type primaryType, Type[] otherTypes, int g...
      method ForDynamicParameters (line 113) | public Identity ForDynamicParameters(Type type) =>
      method Identity (line 117) | internal Identity(string sql, CommandType? commandType, IDbConnectio...
      method Identity (line 120) | private protected Identity(string sql, CommandType? commandType, str...
      method Equals (line 147) | public override bool Equals(object? obj) => Equals(obj as Identity);
      method GetHashCode (line 238) | public override int GetHashCode() => hashCode;
      method ToString (line 245) | public override string ToString() => sql;
      method Equals (line 253) | public bool Equals(Identity? other)
      method TypesEqual (line 271) | [MethodImpl(MethodImplOptions.NoInlining)]
    class IdentityWithTypes (line 54) | internal sealed class IdentityWithTypes : Identity
      method IdentityWithTypes (line 58) | internal IdentityWithTypes(string sql, CommandType? commandType, str...
      method IdentityWithTypes (line 63) | internal IdentityWithTypes(string sql, CommandType? commandType, IDb...
      method GetType (line 71) | internal override Type GetType(int index) => _types[index];
      method HashTypes (line 73) | static int HashTypes(Type[] types)
    class Identity (line 90) | public class Identity : IEquatable<Identity>
      method Identity (line 15) | internal Identity(string sql, CommandType? commandType, string conne...
      method Identity (line 18) | internal Identity(string sql, CommandType? commandType, IDbConnectio...
      method CountNonTrivial (line 22) | static int CountNonTrivial(out int hashCode)
      method GetType (line 43) | internal override Type GetType(int index) => index switch {
      method GetType (line 94) | internal virtual Type GetType(int index) => throw new IndexOutOfRang...
      method ForGrid (line 97) | internal Identity ForGrid<TFirst, TSecond, TThird, TFourth, TFifth, ...
      method ForGrid (line 100) | internal Identity ForGrid(Type primaryType, int gridIndex) =>
      method ForGrid (line 103) | internal Identity ForGrid(Type primaryType, Type[] otherTypes, int g...
      method ForDynamicParameters (line 113) | public Identity ForDynamicParameters(Type type) =>
      method Identity (line 117) | internal Identity(string sql, CommandType? commandType, IDbConnectio...
      method Identity (line 120) | private protected Identity(string sql, CommandType? commandType, str...
      method Equals (line 147) | public override bool Equals(object? obj) => Equals(obj as Identity);
      method GetHashCode (line 238) | public override int GetHashCode() => hashCode;
      method ToString (line 245) | public override string ToString() => sql;
      method Equals (line 253) | public bool Equals(Identity? other)
      method TypesEqual (line 271) | [MethodImpl(MethodImplOptions.NoInlining)]

FILE: Dapper/SqlMapper.Link.cs
  class SqlMapper (line 6) | public static partial class SqlMapper
    class Link (line 15) | internal class Link<TKey, TValue> where TKey : class
      method Clear (line 17) | public static void Clear(ref Link<TKey, TValue>? head) => Interlocke...
      method TryGet (line 18) | public static bool TryGet(Link<TKey, TValue>? link, TKey key, [NotNu...
      method TryAdd (line 33) | public static bool TryAdd(ref Link<TKey, TValue>? head, TKey key, re...
      method Link (line 51) | private Link(TKey key, TValue value, Link<TKey, TValue>? tail)

FILE: Dapper/SqlMapper.LiteralToken.cs
  class SqlMapper (line 6) | public static partial class SqlMapper
    type LiteralToken (line 11) | internal readonly struct LiteralToken
      method LiteralToken (line 23) | internal LiteralToken(string token, string member)

FILE: Dapper/SqlMapper.Settings.cs
  class SqlMapper (line 7) | public static partial class SqlMapper
    class Settings (line 12) | public static class Settings
      method SetAllowedCommandBehaviors (line 18) | private static void SetAllowedCommandBehaviors(CommandBehavior behav...
      method DisableCommandBehaviorOptimizations (line 42) | internal static bool DisableCommandBehaviorOptimizations(CommandBeha...
      method Settings (line 57) | static Settings()
      method SetDefaults (line 65) | public static void SetDefaults()

FILE: Dapper/SqlMapper.TypeDeserializerCache.cs
  class SqlMapper (line 9) | public static partial class SqlMapper
    class TypeDeserializerCache (line 11) | private class TypeDeserializerCache
      method TypeDeserializerCache (line 13) | private TypeDeserializerCache(Type type)
      method Purge (line 20) | internal static void Purge(Type type)
      method Purge (line 28) | internal static void Purge()
      method GetReader (line 36) | internal static Func<DbDataReader, object> GetReader(Type type, DbDa...
      type DeserializerKey (line 55) | private readonly struct DeserializerKey : IEquatable<DeserializerKey>
        method DeserializerKey (line 64) | public DeserializerKey(int hashCode, int startBound, int length, b...
        method GetHashCode (line 91) | public override int GetHashCode() => hashCode;
        method ToString (line 93) | public override string ToString()
        method Equals (line 113) | public override bool Equals(object? obj)
        method Equals (line 116) | public bool Equals(DeserializerKey other)
      method GetReader (line 139) | private Func<DbDataReader, object> GetReader(DbDataReader reader, in...

FILE: Dapper/SqlMapper.TypeHandler.cs
  class SqlMapper (line 6) | public static partial class SqlMapper
    class TypeHandler (line 12) | public abstract class TypeHandler<T> : ITypeHandler
      method SetValue (line 19) | public abstract void SetValue(IDbDataParameter parameter, T? value);
      method Parse (line 26) | public abstract T? Parse(object value);
      method SetValue (line 28) | void ITypeHandler.SetValue(IDbDataParameter parameter, object value)
      method Parse (line 40) | object? ITypeHandler.Parse(Type destinationType, object value)
    class StringTypeHandler (line 50) | public abstract class StringTypeHandler<T> : TypeHandler<T>
      method Parse (line 56) | protected abstract T Parse(string xml);
      method Format (line 62) | protected abstract string Format(T xml);
      method SetValue (line 69) | public override void SetValue(IDbDataParameter parameter, T? value)
      method Parse (line 79) | public override T Parse(object value)

FILE: Dapper/SqlMapper.TypeHandlerCache.cs
  class SqlMapper (line 7) | public static partial class SqlMapper
    class TypeHandlerCache (line 13) | [Obsolete(ObsoleteInternalUsageOnly, false)]
      method Parse (line 22) | [Obsolete(ObsoleteInternalUsageOnly, true)]
      method SetValue (line 30) | [Obsolete(ObsoleteInternalUsageOnly, true)]
      method SetHandler (line 33) | internal static void SetHandler(ITypeHandler handler)

FILE: Dapper/SqlMapper.cs
  class SqlMapper (line 30) | public static partial class SqlMapper
    class PropertyInfoByNameComparer (line 32) | private class PropertyInfoByNameComparer : IComparer<PropertyInfo>
      method Compare (line 34) | public int Compare(PropertyInfo? x, PropertyInfo? y) => string.Compa...
    method GetColumnHash (line 36) | private static int GetColumnHash(DbDataReader reader, int startBound =...
    method OnQueryCachePurged (line 55) | private static void OnQueryCachePurged()
    method SetQueryCache (line 62) | private static void SetQueryCache(Identity key, CacheInfo value)
    method CollectCacheGarbage (line 71) | private static void CollectCacheGarbage()
    method TryGetQueryCache (line 93) | private static bool TryGetQueryCache(Identity key, [NotNullWhen(true)]...
    method PurgeQueryCache (line 107) | public static void PurgeQueryCache()
    method PurgeQueryCacheByType (line 114) | private static void PurgeQueryCacheByType(Type type)
    method GetCachedSQLCount (line 128) | public static int GetCachedSQLCount()
    method GetCachedSQL (line 138) | public static IEnumerable<Tuple<string, string, int>> GetCachedSQL(int...
    method GetHashCollissions (line 151) | public static IEnumerable<Tuple<int, int>> GetHashCollissions() // leg...
    type TypeMapEntryFlags (line 173) | [Flags]
    type TypeMapEntry (line 180) | internal readonly struct TypeMapEntry : IEquatable<TypeMapEntry>
      method TypeMapEntry (line 184) | public TypeMapEntry(DbType dbType, TypeMapEntryFlags flags)
      method GetHashCode (line 189) | public override int GetHashCode() => (int)DbType ^ (int)Flags;
      method ToString (line 190) | public override string ToString() => $"{DbType}, {Flags}";
      method Equals (line 191) | public override bool Equals(object? obj) => obj is TypeMapEntry othe...
      method Equals (line 192) | public bool Equals(TypeMapEntry other) => other.DbType == DbType && ...
    method SqlMapper (line 202) | static SqlMapper()
    method ResetTypeHandlers (line 264) | public static void ResetTypeHandlers() => ResetTypeHandlers(true);
    method ResetTypeHandlers (line 266) | [MemberNotNull(nameof(typeHandlers))]
    method AddTypeMap (line 284) | public static void AddTypeMap(Type type, DbType dbType)
    method AddTypeMap (line 293) | public static void AddTypeMap(Type type, DbType dbType, bool useGetFie...
    method SetTypeMap (line 312) | private static void SetTypeMap(Dictionary<Type, TypeMapEntry> value)
    method RemoveTypeMap (line 327) | public static void RemoveTypeMap(Type type)
    method AddTypeHandler (line 345) | public static void AddTypeHandler(Type type, ITypeHandler handler) => ...
    method HasTypeHandler (line 351) | public static bool HasTypeHandler(Type type) => typeHandlers.ContainsK...
    method AddTypeHandlerImpl (line 359) | [Obsolete("Please use " + nameof(AddTypeHandler), error: true)]
    method AddTypeHandlerCore (line 368) | private static void AddTypeHandlerCore(Type type, ITypeHandler? handle...
    method AddTypeHandler (line 423) | public static void AddTypeHandler<T>(TypeHandler<T> handler) => AddTyp...
    method SetDbType (line 437) | [Obsolete(ObsoleteInternalUsageOnly, false)]
    method LookupDbType (line 458) | [Obsolete(ObsoleteInternalUsageOnly, false)]
    method AsList (line 536) | public static List<T> AsList<T>(this IEnumerable<T>? source) => source...
    method Execute (line 553) | public static int Execute(this IDbConnection cnn, string sql, object? ...
    method Execute (line 565) | public static int Execute(this IDbConnection cnn, CommandDefinition co...
    method ExecuteScalar (line 577) | public static object? ExecuteScalar(this IDbConnection cnn, string sql...
    method ExecuteScalar (line 594) | public static T? ExecuteScalar<T>(this IDbConnection cnn, string sql, ...
    method ExecuteScalar (line 606) | public static object? ExecuteScalar(this IDbConnection cnn, CommandDef...
    method ExecuteScalar (line 616) | public static T? ExecuteScalar<T>(this IDbConnection cnn, CommandDefin...
    method GetMultiExec (line 619) | private static IEnumerable? GetMultiExec(object? param)
    method ExecuteImpl (line 630) | private static int ExecuteImpl(this IDbConnection cnn, ref CommandDefi...
    method ExecuteReader (line 713) | public static IDataReader ExecuteReader(this IDbConnection cnn, string...
    method ExecuteReader (line 730) | public static IDataReader ExecuteReader(this IDbConnection cnn, Comman...
    method ExecuteReader (line 747) | public static IDataReader ExecuteReader(this IDbConnection cnn, Comman...
    method Query (line 764) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QueryFirst (line 778) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QueryFirstOrDefault (line 792) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QuerySingle (line 806) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QuerySingleOrDefault (line 820) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method Query (line 839) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QueryFirst (line 861) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QueryFirstOrDefault (line 882) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QuerySingle (line 903) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QuerySingleOrDefault (line 924) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method Query (line 947) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QueryFirst (line 971) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QueryFirstOrDefault (line 994) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QuerySingle (line 1017) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method QuerySingleOrDefault (line 1040) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method Query (line 1058) | public static IEnumerable<T> Query<T>(this IDbConnection cnn, CommandD...
    method QueryFirst (line 1074) | public static T QueryFirst<T>(this IDbConnection cnn, CommandDefinitio...
    method QueryFirstOrDefault (line 1087) | public static T? QueryFirstOrDefault<T>(this IDbConnection cnn, Comman...
    method QuerySingle (line 1100) | public static T QuerySingle<T>(this IDbConnection cnn, CommandDefiniti...
    method QuerySingleOrDefault (line 1113) | public static T? QuerySingleOrDefault<T>(this IDbConnection cnn, Comma...
    method QueryMultiple (line 1125) | public static GridReader QueryMultiple(this IDbConnection cnn, string ...
    method QueryMultiple (line 1136) | public static GridReader QueryMultiple(this IDbConnection cnn, Command...
    method QueryMultipleImpl (line 1139) | private static GridReader QueryMultipleImpl(this IDbConnection cnn, re...
    method ExecuteReaderWithFlagsFallback (line 1181) | private static DbDataReader ExecuteReaderWithFlagsFallback(IDbCommand ...
    method QueryImpl (line 1198) | private static IEnumerable<T> QueryImpl<T>(this IDbConnection cnn, Com...
    type Row (line 1261) | [Flags]
    method ThrowMultipleRows (line 1271) | private static void ThrowMultipleRows(Row row)
    method ThrowZeroRows (line 1281) | private static void ThrowZeroRows(Row row)
    method QueryRowImpl (line 1291) | private static T QueryRowImpl<T>(IDbConnection cnn, Row row, ref Comma...
    method ReadRow (line 1355) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method GetValue (line 1371) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method Query (line 1424) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method Query (line 1446) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method Query (line 1469) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method Query (line 1493) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method Query (line 1518) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method Query (line 1544) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method Query (line 1564) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method MultiMap (line 1572) | private static IEnumerable<TReturn> MultiMap<TFirst, TSecond, TThird, ...
    method MultiMapImpl (line 1580) | private static IEnumerable<TReturn> MultiMapImpl<TFirst, TSecond, TThi...
    method GetBehavior (line 1641) | private static CommandBehavior GetBehavior(bool close, CommandBehavior...
    method MultiMapImpl (line 1646) | private static IEnumerable<TReturn> MultiMapImpl<TReturn>(this IDbConn...
    method GenerateMapper (line 1712) | private static Func<DbDataReader, TReturn> GenerateMapper<TFirst, TSec...
    method GenerateMapper (line 1724) | private static Func<DbDataReader, TReturn> GenerateMapper<TReturn>(int...
    method GenerateDeserializers (line 1740) | private static Func<DbDataReader, object>[] GenerateDeserializers(Iden...
    method GetNextSplitDynamic (line 1809) | private static int GetNextSplitDynamic(int startIdx, string splitOn, D...
    method GetNextSplit (line 1832) | private static int GetNextSplit(int startIdx, string splitOn, DbDataRe...
    method GetCacheInfo (line 1850) | private static CacheInfo GetCacheInfo(Identity identity, object? examp...
    method ShouldPassByPosition (line 1895) | private static bool ShouldPassByPosition(string sql)
    method PassByPosition (line 1900) | private static void PassByPosition(IDbCommand cmd)
    method GetDbDataReader (line 1946) | static DbDataReader GetDbDataReader(IDataReader reader)
    method GetDeserializer (line 1951) | private static Func<DbDataReader, object> GetDeserializer(Type type, D...
    method GetHandlerDeserializer (line 1979) | private static Func<DbDataReader, object> GetHandlerDeserializer(IType...
    method MultiMapException (line 1984) | private static Exception MultiMapException(IDataRecord reader, string?...
    method GetDapperRowDeserializer (line 2003) | internal static Func<DbDataReader, object> GetDapperRowDeserializer(Db...
    method ReadChar (line 2068) | [Browsable(false)]
    method ReadNullableChar (line 2083) | [Browsable(false)]
    method FindOrAddParameter (line 2100) | [Browsable(false)]
    method GetListPaddingExtraCount (line 2119) | internal static int GetListPaddingExtraCount(int count)
    method GetInListRegex (line 2146) | private static string GetInListRegex(string name, bool byPosition) => ...
    method PackListParameters (line 2156) | [Browsable(false)]
    method TryStringSplit (line 2309) | private static bool TryStringSplit(ref IEnumerable? list, int splitAt,...
    method TryStringSplit (line 2322) | private static bool TryStringSplit<T>(ref IEnumerable<T> list, int spl...
    method SanitizeParameterValue (line 2382) | [Obsolete(ObsoleteInternalUsageOnly, false)]
    method FilterParameters (line 2407) | private static IEnumerable<PropertyInfo> FilterParameters(IEnumerable<...
    method ReplaceLiterals (line 2423) | public static void ReplaceLiterals(this IParameterLookup parameters, I...
    method Format (line 2435) | [Obsolete(ObsoleteInternalUsageOnly)]
    method ReplaceLiterals (line 2505) | internal static void ReplaceLiterals(IParameterLookup parameters, IDbC...
    method GetLiteralTokens (line 2519) | [SuppressMessage("Style", "IDE0220:Add explicit cast", Justification =...
    method CreateParamInfoGenerator (line 2545) | public static Action<IDbCommand, object> CreateParamInfoGenerator(Iden...
    method IsValueTuple (line 2548) | private static bool IsValueTuple(Type? type) => (type?.IsValueType == ...
    method CreateParamInfoGenerator (line 2552) | internal static Action<IDbCommand, object?> CreateParamInfoGenerator(I...
    method GetToString (line 2978) | private static MethodInfo? GetToString(TypeCode typeCode)
    method ExecuteCommand (line 2986) | private static int ExecuteCommand(IDbConnection cnn, ref CommandDefini...
    method ExecuteScalarImpl (line 3006) | private static T? ExecuteScalarImpl<T>(IDbConnection cnn, ref CommandD...
    method ExecuteReaderImpl (line 3035) | private static DbDataReader ExecuteReaderImpl(IDbConnection cnn, ref C...
    method GetParameterReader (line 3061) | private static Action<IDbCommand, object?>? GetParameterReader(IDbConn...
    method GetSimpleValueDeserializer (line 3081) | private static Func<DbDataReader, object> GetSimpleValueDeserializer(T...
    method ReadViaGetFieldValueFactory (line 3129) | static Func<DbDataReader, object> ReadViaGetFieldValueFactory(Type typ...
    method UnderlyingReadViaGetFieldValueFactory (line 3149) | static Func<DbDataReader, object> UnderlyingReadViaGetFieldValueFactor...
    method UseGetFieldValue (line 3152) | static bool UseGetFieldValue(Type type) => typeMap.TryGetValue(type, o...
    method Parse (line 3155) | private static T Parse<T>(object? value)
    method GetTypeMap (line 3199) | public static ITypeMap GetTypeMap(Type type)
    method SetTypeMap (line 3228) | public static void SetTypeMap(Type type, ITypeMap? map)
    method GetTypeDeserializer (line 3261) | [Obsolete(nameof(DbDataReader) + " API should be preferred")]
    method WrapObjectReader (line 3271) | private static Func<IDataReader, object> WrapObjectReader(Func<DbDataR...
    method GetTypeDeserializer (line 3283) | public static Func<DbDataReader, object> GetTypeDeserializer(
    method GetTempLocal (line 3290) | private static LocalBuilder GetTempLocal(ILGenerator il, ref Dictionar...
    method GetTypeDeserializerImpl (line 3309) | private static Func<DbDataReader, object> GetTypeDeserializerImpl(
    method GenerateValueTupleDeserializer (line 3340) | private static void GenerateValueTupleDeserializer(Type valueTupleType...
    method GenerateDeserializerFromMap (line 3442) | private static void GenerateDeserializerFromMap(Type type, DbDataReade...
    method LoadDefaultValue (line 3656) | private static void LoadDefaultValue(ILGenerator il, Type type)
    method LoadReaderValueViaGetFieldValue (line 3671) | private static void LoadReaderValueViaGetFieldValue(ILGenerator il, in...
    method LoadReaderValueOrBranchToDBNullLabel (line 3702) | private static void LoadReaderValueOrBranchToDBNullLabel(ILGenerator i...
    method FlexibleConvertBoxedFromHeadOfStack (line 3799) | private static void FlexibleConvertBoxedFromHeadOfStack(ILGenerator il...
    method GetOperator (line 3882) | private static MethodInfo? GetOperator(Type from, Type to)
    method ResolveOperator (line 3892) | private static MethodInfo? ResolveOperator(MethodInfo[] methods, Type ...
    method ThrowNullCustomQueryParameter (line 3907) | [Obsolete(ObsoleteInternalUsageOnly, false)]
    method ThrowDataException (line 3919) | [Obsolete(ObsoleteInternalUsageOnly, false)]
    method EmitInt32 (line 3969) | private static void EmitInt32(ILGenerator il, int value)
    method AsTableValuedParameter (line 4020) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method SetTypeName (line 4029) | public static void SetTypeName(this DataTable table, string typeName)
    method GetTypeName (line 4044) | public static string? GetTypeName(this DataTable table) =>
    method AsTableValuedParameter (line 4052) | [System.Diagnostics.CodeAnalysis.SuppressMessage("ApiDesign", "RS0026:...
    method GetStringBuilder (line 4059) | private static StringBuilder GetStringBuilder()
    method ToStringRecycle (line 4071) | private static string ToStringRecycle(this StringBuilder obj)

FILE: Dapper/TableValuedParameter.cs
  class TableValuedParameter (line 8) | internal sealed class TableValuedParameter : SqlMapper.ICustomQueryParam...
    method TableValuedParameter (line 17) | public TableValuedParameter(DataTable table) : this(table, null) { /* ...
    method TableValuedParameter (line 24) | public TableValuedParameter(DataTable table, string? typeName)
    method AddParameter (line 30) | void SqlMapper.ICustomQueryParameter.AddParameter(IDbCommand command, ...
    method Set (line 38) | internal static void Set(IDbDataParameter parameter, DataTable? table,...

FILE: Dapper/TypeExtensions.cs
  class TypeExtensions (line 6) | internal static class TypeExtensions
    method GetPublicInstanceMethod (line 8) | public static MethodInfo? GetPublicInstanceMethod(this Type type, stri...

FILE: Dapper/UdtTypeHandler.cs
  class SqlMapper (line 6) | public static partial class SqlMapper
    class UdtTypeHandler (line 12) | public class UdtTypeHandler : ITypeHandler
      method UdtTypeHandler (line 19) | public UdtTypeHandler(string udtTypeName)
      method Parse (line 25) | object? ITypeHandler.Parse(Type destinationType, object value)
      method SetValue (line 30) | void ITypeHandler.SetValue(IDbDataParameter parameter, object value)

FILE: Dapper/WrappedDataReader.cs
  type IWrappedDataReader (line 9) | public interface IWrappedDataReader : IDataReader

FILE: Dapper/WrappedReader.cs
  method DisposedReader (line 17) | private DisposedReader() { }
  method ThrowDisposed (line 25) | [MethodImpl(MethodImplOptions.NoInlining)]
  method ThrowDisposedAsync (line 27) | [MethodImpl(MethodImplOptions.NoInlining)]
  method Close (line 34) | public override void Close() { }
  method GetSchemaTable (line 35) | public override DataTable GetSchemaTable() => ThrowDisposed<DataTable>();
  method InitializeLifetimeService (line 38) | [Obsolete("This Remoting API is not supported and throws PlatformNotSupp...
  method Dispose (line 41) | protected override void Dispose(bool disposing) { }
  method GetBoolean (line 42) | public override bool GetBoolean(int ordinal) => ThrowDisposed<bool>();
  method GetBytes (line 43) | public override long GetBytes(int ordinal, long dataOffset, byte[]? buff...
  method GetFloat (line 44) | public override float GetFloat(int ordinal) => ThrowDisposed<float>();
  method GetInt16 (line 45) | public override short GetInt16(int ordinal) => ThrowDisposed<short>();
  method GetByte (line 46) | public override byte GetByte(int ordinal) => ThrowDisposed<byte>();
  method GetChar (line 47) | public override char GetChar(int ordinal) => ThrowDisposed<char>();
  method GetChars (line 48) | public override long GetChars(int ordinal, long dataOffset, char[]? buff...
  method GetDataTypeName (line 49) | public override string GetDataTypeName(int ordinal) => ThrowDisposed<str...
  method GetDateTime (line 50) | public override DateTime GetDateTime(int ordinal) => ThrowDisposed<DateT...
  method GetDbDataReader (line 51) | protected override DbDataReader GetDbDataReader(int ordinal) => ThrowDis...
  method GetDecimal (line 52) | public override decimal GetDecimal(int ordinal) => ThrowDisposed<decimal...
  method GetDouble (line 53) | public override double GetDouble(int ordinal) => ThrowDisposed<double>();
  method GetEnumerator (line 54) | public override IEnumerator GetEnumerator() => ThrowDisposed<IEnumerator...
  method GetFieldType (line 55) | public override Type GetFieldType(int ordinal) => ThrowDisposed<Type>();
  method GetFieldValue (line 56) | public override T GetFieldValue<T>(int ordinal) => ThrowDisposed<T>();
  method GetFieldValueAsync (line 57) | public override Task<T> GetFieldValueAsync<T>(int ordinal, CancellationT...
  method GetGuid (line 58) | public override Guid GetGuid(int ordinal) => ThrowDisposed<Guid>();
  method GetInt32 (line 59) | public override int GetInt32(int ordinal) => ThrowDisposed<int>();
  method GetInt64 (line 60) | public override long GetInt64(int ordinal) => ThrowDisposed<long>();
  method GetName (line 61) | public override string GetName(int ordinal) => ThrowDisposed<string>();
  method GetOrdinal (line 62) | public override int GetOrdinal(string name) => ThrowDisposed<int>();
  method GetProviderSpecificFieldType (line 63) | public override Type GetProviderSpecificFieldType(int ordinal) => ThrowD...
  method GetProviderSpecificValue (line 64) | public override object GetProviderSpecificValue(int ordinal) => ThrowDis...
  method GetProviderSpecificValues (line 65) | public override int GetProviderSpecificValues(object[] values) => ThrowD...
  method GetStream (line 66) | public override Stream GetStream(int ordinal) => ThrowDisposed<Stream>();
  method GetString (line 67) | public override string GetString(int ordinal) => ThrowDisposed<string>();
  method GetTextReader (line 68) | public override TextReader GetTextReader(int ordinal) => ThrowDisposed<T...
  method GetValue (line 69) | public override object GetValue(int ordinal) => ThrowDisposed<object>();
  method GetValues (line 70) | public override int GetValues(object[] values) => ThrowDisposed<int>();
  method IsDBNull (line 71) | public override bool IsDBNull(int ordinal) => ThrowDisposed<bool>();
  method IsDBNullAsync (line 72) | public override Task<bool> IsDBNullAsync(int ordinal, CancellationToken ...
  method NextResult (line 73) | public override bool NextResult() => ThrowDisposed<bool>();
  method Read (line 74) | public override bool Read() => ThrowDisposed<bool>();
  method NextResultAsync (line 75) | public override Task<bool> NextResultAsync(CancellationToken cancellatio...
  method ReadAsync (line 76) | public override Task<bool> ReadAsync(CancellationToken cancellationToken...
  method Create (line 86) | public static DbDataReader Create(IDbCommand? cmd, DbDataReader reader)
  method DbWrappedReader (line 102) | public DbWrappedReader(IDbCommand cmd, DbDataReader reader)
  method Close (line 110) | public override void Close() => _reader.Close();
  method GetSchemaTable (line 111) | public override DataTable? GetSchemaTable() => _reader.GetSchemaTable();
  method InitializeLifetimeService (line 114) | [Obsolete("This Remoting API is not supported and throws PlatformNotSupp...
  method NextResult (line 122) | public override bool NextResult() => _reader.NextResult();
  method Read (line 124) | public override bool Read() => _reader.Read();
  method Dispose (line 128) | protected override void Dispose(bool disposing)
  method GetBoolean (line 141) | public override bool GetBoolean(int i) => _reader.GetBoolean(i);
  method GetByte (line 143) | public override byte GetByte(int i) => _reader.GetByte(i);
  method GetBytes (line 145) | public override long GetBytes(int i, long fieldOffset, byte[]? buffer, i...
  method GetChar (line 148) | public override char GetChar(int i) => _reader.GetChar(i);
  method GetChars (line 150) | public override long GetChars(int i, long fieldoffset, char[]? buffer, i...
  method GetDataTypeName (line 153) | public override string GetDataTypeName(int i) => _reader.GetDataTypeName...
  method GetDateTime (line 155) | public override DateTime GetDateTime(int i) => _reader.GetDateTime(i);
  method GetDecimal (line 157) | public override decimal GetDecimal(int i) => _reader.GetDecimal(i);
  method GetDouble (line 159) | public override double GetDouble(int i) => _reader.GetDouble(i);
  method GetFieldType (line 161) | public override Type GetFieldType(int i) => _reader.GetFieldType(i);
  method GetFloat (line 163) | public override float GetFloat(int i) => _reader.GetFloat(i);
  method GetGuid (line 165) | public override Guid GetGuid(int i) => _reader.GetGuid(i);
  method GetInt16 (line 167) | public override short GetInt16(int i) => _reader.GetInt16(i);
  method GetInt32 (line 169) | public override int GetInt32(int i) => _reader.GetInt32(i);
  method GetInt64 (line 171) | public override long GetInt64(int i) => _reader.GetInt64(i);
  method GetName (line 173) | public override string GetName(int i) => _reader.GetName(i);
  method GetOrdinal (line 175) | public override int GetOrdinal(string name) => _reader.GetOrdinal(name);
  method GetString (line 177) | public override string GetString(int i) => _reader.GetString(i);
  method GetValue (line 179) | public override object GetValue(int i) => _reader.GetValue(i);
  method GetValues (line 181) | public override int GetValues(object[] values) => _reader.GetValues(valu...
  method IsDBNull (line 183) | public override bool IsDBNull(int i) => _reader.IsDBNull(i);
  method GetFieldValue (line 189) | public override T GetFieldValue<T>(int ordinal) => _reader.GetFieldValue...
  method GetFieldValueAsync (line 190) | public override Task<T> GetFieldValueAsync<T>(int ordinal, CancellationT...
  method GetEnumerator (line 191) | public override IEnumerator GetEnumerator() => _reader.GetEnumerator();
  method GetProviderSpecificFieldType (line 192) | public override Type GetProviderSpecificFieldType(int ordinal) => _reade...
  method GetProviderSpecificValue (line 193) | public override object GetProviderSpecificValue(int ordinal) => _reader....
  method GetProviderSpecificValues (line 194) | public override int GetProviderSpecificValues(object[] values) => _reade...
  method GetStream (line 195) | public override Stream GetStream(int ordinal) => _reader.GetStream(ordin...
  method GetTextReader (line 196) | public override TextReader GetTextReader(int ordinal) => _reader.GetText...
  method IsDBNullAsync (line 197) | public override Task<bool> IsDBNullAsync(int ordinal, CancellationToken ...
  method NextResultAsync (line 198) | public override Task<bool> NextResultAsync(CancellationToken cancellatio...
  method ReadAsync (line 199) | public override Task<bool> ReadAsync(CancellationToken cancellationToken...
  method GetDbDataReader (line 201) | protected override DbDataReader GetDbDataReader(int ordinal) => _reader....
  method CloseAsync (line 204) | public override Task CloseAsync() => _reader.CloseAsync();
  method DisposeAsync (line 206) | public override ValueTask DisposeAsync() => _reader.DisposeAsync();
  method GetColumnSchemaAsync (line 208) | public override Task<ReadOnlyCollection<DbColumn>> GetColumnSchemaAsync(...
  method GetSchemaTableAsync (line 210) | public override Task<DataTable?> GetSchemaTableAsync(CancellationToken c...
  method WrappedBasicReader (line 218) | public WrappedBasicReader(IDataReader reader)
  method Close (line 225) | public override void Close() => _reader.Close();
  method GetSchemaTable (line 226) | public override DataTable? GetSchemaTable() => _reader.GetSchemaTable();
  method InitializeLifetimeService (line 229) | [Obsolete("This Remoting API is not supported and throws PlatformNotSupp...
  method NextResult (line 237) | public override bool NextResult() => _reader.NextResult();
  method Read (line 239) | public override bool Read() => _reader.Read();
  method Dispose (line 243) | protected override void Dispose(bool disposing)
  method GetBoolean (line 254) | public override bool GetBoolean(int i) => _reader.GetBoolean(i);
  method GetByte (line 256) | public override byte GetByte(int i) => _reader.GetByte(i);
  method GetBytes (line 258) | public override long GetBytes(int i, long fieldOffset, byte[]? buffer, i...
  method GetChar (line 261) | public override char GetChar(int i) => _reader.GetChar(i);
  method GetChars (line 263) | public override long GetChars(int i, long fieldoffset, char[]? buffer, i...
  method GetDataTypeName (line 266) | public override string GetDataTypeName(int i) => _reader.GetDataTypeName...
  method GetDateTime (line 268) | public override DateTime GetDateTime(int i) => _reader.GetDateTime(i);
  method GetDecimal (line 270) | public override decimal GetDecimal(int i) => _reader.GetDecimal(i);
  method GetDouble (line 272) | public override double GetDouble(int i) => _reader.GetDouble(i);
  method GetFieldType (line 274) | public override Type GetFieldType(int i) => _reader.GetFieldType(i);
  method GetFloat (line 276) | public override float GetFloat(int i) => _reader.GetFloat(i);
  method GetGuid (line 278) | public override Guid GetGuid(int i) => _reader.GetGuid(i);
  method GetInt16 (line 280) | public override short GetInt16(int i) => _reader.GetInt16(i);
  method GetInt32 (line 282) | public override int GetInt32(int i) => _reader.GetInt32(i);
  method GetInt64 (line 284) | public override long GetInt64(int i) => _reader.GetInt64(i);
  method GetName (line 286) | public override string GetName(int i) => _reader.GetName(i);
  method GetOrdinal (line 288) | public override int GetOrdinal(string name) => _reader.GetOrdinal(name);
  method GetString (line 290) | public override string GetString(int i) => _reader.GetString(i);
  method GetValue (line 292) | public override object GetValue(int i) => _reader.GetValue(i);
  method GetValues (line 294) | public override int GetValues(object[] values) => _reader.GetValues(valu...
  method IsDBNull (line 296) | public override bool IsDBNull(int i) => _reader.IsDBNull(i);
  method GetFieldValue (line 302) | public override T GetFieldValue<T>(int ordinal)
  method GetFieldValueAsync (line 311) | public override Task<T> GetFieldValueAsync<T>(int ordinal, CancellationT...
  method GetEnumerator (line 316) | public override IEnumerator GetEnumerator() => _reader is IEnumerable e ...
  method GetProviderSpecificFieldType (line 318) | public override Type GetProviderSpecificFieldType(int ordinal) => _reade...
  method GetProviderSpecificValue (line 319) | public override object GetProviderSpecificValue(int ordinal) => _reader....
  method GetProviderSpecificValues (line 320) | public override int GetProviderSpecificValues(object[] values) => _reade...
  method GetStream (line 321) | public override Stream GetStream(int ordinal) => throw new NotSupportedE...
  method GetTextReader (line 322) | public override TextReader GetTextReader(int ordinal) => throw new NotSu...
  method IsDBNullAsync (line 323) | public override Task<bool> IsDBNullAsync(int ordinal, CancellationToken ...
  method NextResultAsync (line 328) | public override Task<bool> NextResultAsync(CancellationToken cancellatio...
  method ReadAsync (line 333) | public override Task<bool> ReadAsync(CancellationToken cancellationToken)
  method GetDbDataReader (line 339) | protected override DbDataReader GetDbDataReader(int ordinal) => throw ne...
  method CloseAsync (line 342) | public override Task CloseAsync()
  method DisposeAsync (line 348) | public override ValueTask DisposeAsync()
  method GetColumnSchemaAsync (line 354) | public override Task<ReadOnlyCollection<DbColumn>> GetColumnSchemaAsync(...
  method GetSchemaTableAsync (line 357) | public override Task<DataTable?> GetSchemaTableAsync(CancellationToken c...

FILE: Dapper/XmlHandlers.cs
  class XmlTypeHandler (line 7) | internal abstract class XmlTypeHandler<T> : SqlMapper.StringTypeHandler<T>
    method SetValue (line 9) | public override void SetValue(IDbDataParameter parameter, T? value)
  class XmlDocumentHandler (line 16) | internal sealed class XmlDocumentHandler : XmlTypeHandler<XmlDocument>
    method Parse (line 18) | protected override XmlDocument Parse(string xml)
    method Format (line 25) | protected override string Format(XmlDocument xml) => xml.OuterXml;
  class XDocumentHandler (line 28) | internal sealed class XDocumentHandler : XmlTypeHandler<XDocument>
    method Parse (line 30) | protected override XDocument Parse(string xml) => XDocument.Parse(xml);
    method Format (line 31) | protected override string Format(XDocument xml) => xml.ToString();
  class XElementHandler (line 34) | internal sealed class XElementHandler : XmlTypeHandler<XElement>
    method Parse (line 36) | protected override XElement Parse(string xml) => XElement.Parse(xml);
    method Format (line 37) | protected override string Format(XElement xml) => xml.ToString();

FILE: benchmarks/Dapper.Tests.Performance/Benchmarks.Belgrade.cs
  class BelgradeBenchmarks (line 9) | [Description("Belgrade")]
    method Setup (line 14) | [GlobalSetup]
    method FirstOrDefault (line 21) | [Benchmark(Description = "FirstOrDefault")]

FILE: benchmarks/Dapper.Tests.Performance/Benchmarks.Dapper.cs
  class DapperBenchmarks (line 8) | [Description("Dapper")]
    method Setup (line 11) | [GlobalSetup]
    method QueryBuffered (line 17) | [Benchmark(Description = "Query<T> (buffered)")]
    method QueryBufferedDynamic (line 24) | [Benchmark(Description = "Query<dynamic> (buffered)")]
    method QueryUnbuffered (line 31) | [Benchmark(Description = "Query<T> (unbuffered)")]
    method QueryUnbufferedDynamic (line 38) | [Benchmark(Description = "Query<dynamic> (unbuffered)")]
    method QueryFirstOrDefault (line 45) | [Benchmark(Description = "QueryFirstOrDefault<T>")]
    method QueryFirstOrDefaultDynamic (line 52) | [Benchmark(Description = "QueryFirstOrDefault<dynamic>")]
    method ContribGet (line 59) | [Benchmark(Description = "Contrib Get<T>")]

FILE: benchmarks/Dapper.Tests.Performance/Benchmarks.Dashing.cs
  class DashingBenchmarks (line 9) | [Description("Dashing")]
    method Setup (line 14) | [GlobalSetup]
    method Get (line 27) | public Dashing.Post Get()

FILE: benchmarks/Dapper.Tests.Performance/Benchmarks.EntityFramework.cs
  class EF6Benchmarks (line 7) | [Description("EF 6")]
    method Setup (line 12) | [GlobalSetup]
    method First (line 19) | [Benchmark(Description = "First")]
    method SqlQuery (line 26) | [Benchmark(Description = "SqlQuery")]
    method NoTracking (line 33) | [Benchmark(Description = "First (No Tracking)")]

FILE: benchmarks/Dapper.Tests.Performance/Benchmarks.EntityFrameworkCore.cs
  class EFCoreBenchmarks (line 10) | [Description("EF Core")]
    method Setup (line 18) | [GlobalSetup]
    method First (line 25) | [Benchmark(Description = "First")]
    method Compiled (line 32) | [Benchmark(Description = "First (Compiled)")]
    method SqlQuery (line 39) | [Benchmark(Description = "SqlQuery")]
    method NoTracking (line 46) | [Benchmark(Description = "First (No Tracking)")]

FILE: benchmarks/Dapper.Tests.Performance/Benchmarks.HandCoded.cs
  class HandCodedBenchmarks (line 9) | [Description("Hand Coded")]
    method Setup (line 16) | [GlobalSetup]
    method SqlCommand (line 44) | [Benchmark(Description = "SqlCommand")]
    method DataTableDynamic (line 73) | [Benchmark(Description = "DataTable")]

FILE: benchmarks/Dapper.Tests.Performance/Benchmarks.Linq2DB.cs
  class LinqToDBBenchmarks (line 12) | [Description("LINQ to DB")]
    method Setup (line 19) | [GlobalSetup]
    method First (line 27) | [Benchmark(Description = "First")]
    method Compiled (line 34) | [Benchmark(Description = "First (Compiled)")]
    method Query (line 41) | [Benchmark(Description = "Query<T>")]

FILE: benchmarks/Dapper.Tests.Performance/Benchmarks.Linq2Sql.cs
  class LinqToSqlBenchmarks (line 11) | [Description("LINQ to SQL")]
    method Setup (line 19) | [GlobalSetup]
    method First (line 26) | [Benchmark(Description = "First")]
    method Compiled (line 33) | [Benchmark(Description = "First (Compiled)")]
    method ExecuteQuery (line 40) | [Benchmark(Description = "ExecuteQuery")]

FILE: benchmarks/Dapper.Tests.Performance/Benchmarks.Massive.cs
  class MassiveBenchmarks (line 8) | [Description("Massive")]
    method Setup (line 13) | [GlobalSetup]
    method QueryDynamic (line 21) | [Benchmark(Description = "Query (dynamic)")]

FILE: benchmarks/Dapper.Tests.Performance/Benchmarks.Mighty.cs
  class MightyBenchmarks (line 8) | [Description("Mighty")]
    method Setup (line 14) | [GlobalSetup]
    method Query (line 27) | [Benchmark(Description = "Query<T>")]
    method QueryDynamic (line 34) | [Benchmark(Description = "Query<dynamic>")]
    method SingleFromQuery (line 41) | [Benchmark(Description = "SingleFromQuery<T>")]
    method SingleFromQueryDynamic (line 48) | [Benchmark(Description = "SingleFromQuery<dynamic>")]

FILE: benchmarks/Dapper.Tests.Performance/Benchmarks.NHibernate.cs
  class NHibernateBenchmarks (line 12) | public class NHibernateBenchmarks : BenchmarkBase
    method Setup (line 16) | [GlobalSetup]
    method SQL (line 27) | [Benchmark(Description = "SQL")]
    method HQL (line 37) | [Benchmark(Description = "HQL")]
    method Criteria (line 46) | [Benchmark(Description = "Criteria")]
    method LINQ (line 55) | [Benchmark(Description = "LINQ")]
    method Get (line 62) | [Benchmark(Description = "Get<T>")]

FILE: benchmarks/Dapper.Tests.Performance/Benchmarks.Norm.cs
  class NormBenchmarks (line 10) | [Description("Norm")]
    method Setup (line 13) | [GlobalSetup]
    method Read (line 19) | [Benchmark(Description = "Read<> (class)")]
    method ReadSimpleValues (line 26) | [Benchmark(Description = "Read<> (tuples)")]
    method ReadTuple (line 33) | [Benchmark(Description = "Read<()> (named tuples)")]

FILE: benchmarks/Dapper.Tests.Performance/Benchmarks.PetaPoco.cs
  class PetaPocoBenchmarks (line 30) | [Description("PetaPoco")]
    method Setup (line 35) | [GlobalSetup]
    method Fetch (line 49) | [Benchmark(Description = "Fetch<T>")]
    method FetchFast (line 56) | [Benchmark(Description = "Fetch<T> (Fast)")]

FILE: benchmarks/Dapper.Tests.Performance/Benchmarks.RepoDB.cs
  class RepoDbBenchmarks (line 11) | [Description("RepoDB")]
    method Setup (line 14) | [GlobalSetup]
    method Query (line 32) | [Benchmark(Description = "Query<T>")]
    method QueryWhere (line 39) | [Benchmark(Description = "QueryWhere<T>")]
    method QueryDynamic (line 46) | [Benchmark(Description = "QueryDynamic<T>")]
    method QueryField (line 53) | [Benchmark(Description = "QueryField<T>")]
    method ExecuteQuery (line 60) | [Benchmark(Description = "ExecuteQuery<T>")]

FILE: benchmarks/Dapper.Tests.Performance/Benchmarks.ServiceStack.cs
  class ServiceStackBenchmarks (line 8) | [Description("ServiceStack")]
    method Setup (line 13) | [GlobalSetup]
    method Query (line 21) | [Benchmark(Description = "SingleById<T>")]

FILE: benchmarks/Dapper.Tests.Performance/Benchmarks.SqlMarshal.cs
  class SqlMarshalBenchmarks (line 6) | [Description("SqlMarshal")]
    method Setup (line 9) | [GlobalSetup]
    method SqlCommand (line 15) | [Benchmark(Description = "SqlCommand")]
    method ReadPost (line 22) | [SqlMarshal("")]

FILE: benchmarks/Dapper.Tests.Performance/Benchmarks.Susanoo.cs
  class SusanooBenchmarks (line 11) | [Description("Susanoo")]
    method Setup (line 26) | [GlobalSetup]
    method MappingCache (line 33) | [Benchmark(Description = "Execute<T> (Cache)")]
    method MappingCacheDynamic (line 43) | [Benchmark(Description = "Execute<dynamic> (Cache)")]
    method MappingStatic (line 53) | [Benchmark(Description = "Execute<T> (Static)")]
    method MappingStaticDynamic (line 60) | [Benchmark(Description = "Execut<dynamic> (Static)")]

FILE: benchmarks/Dapper.Tests.Performance/Benchmarks.XPO.cs
  class XpoBenchmarks (line 11) | [Description("DevExpress.XPO")]
    method Setup (line 16) | [GlobalSetup]
    method Cleanup (line 29) | [GlobalCleanup]
    method GetObjectByKey (line 35) | [Benchmark(Description = "GetObjectByKey<T>")]
    method FindObject (line 42) | [Benchmark(Description = "FindObject<T>")]
    method Query (line 55) | [Benchmark(Description = "Query<T>")]

FILE: benchmarks/Dapper.Tests.Performance/Benchmarks.cs
  class BenchmarkBase (line 8) | [BenchmarkCategory("ORM")]
    method BaseSetup (line 17) | protected void BaseSetup()
    method RegisterSqlFactory (line 24) | protected void RegisterSqlFactory()
    method Step (line 31) | protected void Step()

FILE: benchmarks/Dapper.Tests.Performance/Config.cs
  class Config (line 13) | public class Config : ManualConfig
    method Config (line 17) | public Config()

FILE: benchmarks/Dapper.Tests.Performance/DapperCacheImpact.cs
  class DapperCacheImpact (line 6) | [Description("Dapper cache impact")]
    method Setup (line 10) | [GlobalSetup]
    class Foo (line 15) | public class Foo
    method ExecuteNoParameters_Cache (line 22) | [Benchmark]
    method ExecuteParameters_Cache (line 24) | [Benchmark]
    method QueryFirstNoParameters_Cache (line 26) | [Benchmark]
    method QueryFirstParameters_Cache (line 28) | [Benchmark]
    method ExecuteNoParameters_NoCache (line 30) | [Benchmark]
    method ExecuteParameters_NoCache (line 32) | [Benchmark]
    method QueryFirstNoParameters_NoCache (line 34) | [Benchmark]
    method QueryFirstParameters_NoCache (line 36) | [Benchmark]

FILE: benchmarks/Dapper.Tests.Performance/Dashing/DashingConfiguration.cs
  class DashingConfiguration (line 5) | public class DashingConfiguration : BaseConfiguration
    method DashingConfiguration (line 7) | public DashingConfiguration()

FILE: benchmarks/Dapper.Tests.Performance/Dashing/Post.cs
  class Post (line 5) | public class Post

FILE: benchmarks/Dapper.Tests.Performance/EntityFramework/EFContext.cs
  class EFContext (line 6) | public class EFContext : DbContext
    method EFContext (line 8) | public EFContext(DbConnection connection, bool owned = false) : base(c...

FILE: benchmarks/Dapper.Tests.Performance/EntityFrameworkCore/EFCoreContext.cs
  class EFCoreContext (line 5) | public class EFCoreContext : DbContext
    method EFCoreContext (line 9) | public EFCoreContext(string connectionString)
    method OnConfiguring (line 14) | protected override void OnConfiguring(DbContextOptionsBuilder optionsB...

FILE: benchmarks/Dapper.Tests.Performance/Helpers/ORMColum.cs
  class ORMColum (line 9) | public class ORMColum : IColumn
    method IsDefault (line 15) | public bool IsDefault(Summary summary, BenchmarkCase benchmarkCase) =>...
    method GetValue (line 16) | public string GetValue(Summary summary, BenchmarkCase benchmarkCase)
    method GetValue (line 22) | public string GetValue(Summary summary, BenchmarkCase benchmarkCase, S...
    method IsAvailable (line 24) | public bool IsAvailable(Summary summary) => true;
    method ToString (line 30) | public override string ToString() => ColumnName;

FILE: benchmarks/Dapper.Tests.Performance/Helpers/ReturnColum.cs
  class ReturnColum (line 7) | public class ReturnColum : IColumn
    method IsDefault (line 13) | public bool IsDefault(Summary summary, BenchmarkCase benchmarkCase) =>...
    method GetValue (line 14) | public string GetValue(Summary summary, BenchmarkCase benchmarkCase)
    method GetValue (line 20) | public string GetValue(Summary summary, BenchmarkCase benchmarkCase, S...
    method IsAvailable (line 22) | public bool IsAvailable(Summary summary) => true;
    method ToString (line 28) | public override string ToString() => ColumnName;

FILE: benchmarks/Dapper.Tests.Performance/LegacyTests.cs
  class LegacyTests (line 34) | public class LegacyTests
    class Test (line 36) | private class Test
      method Test (line 38) | public Test(Action<int> iteration, string name)
      method Test (line 44) | public Test(Func<int, Task> iterationAsync, string name)
    class Tests (line 56) | private class Tests : List<Test>
      method Add (line 58) | public void Add(Action<int> iteration, string name)
      method AsyncAdd (line 63) | public void AsyncAdd(Func<int, Task> iterationAsync, string name)
      method RunAsync (line 68) | public async Task RunAsync(int iterations)
    method GetOpenConnection (line 107) | public static SqlConnection GetOpenConnection()
    method GetL2SContext (line 115) | private static DataClassesDataContext GetL2SContext(SqlConnection conn...
    method Try (line 119) | private static void Try(Action action, string blame)
    method RunAsync (line 131) | [System.Diagnostics.CodeAnalysis.SuppressMessage("Performance", "CA180...

FILE: benchmarks/Dapper.Tests.Performance/Linq2DB/ConnectionStringSettings.cs
  class ConnectionStringSettings (line 5) | public class ConnectionStringSettings : IConnectionStringSettings

FILE: benchmarks/Dapper.Tests.Performance/Linq2DB/Linq2DBContext.cs
  class Linq2DBContext (line 5) | public class Linq2DBContext : LinqToDB.Data.DataConnection

FILE: benchmarks/Dapper.Tests.Performance/Linq2DB/Linq2DbSettings.cs
  class Linq2DBSettings (line 7) | public class Linq2DBSettings : ILinqToDBSettings
    method Linq2DBSettings (line 15) | public Linq2DBSettings(string connectionString)

FILE: benchmarks/Dapper.Tests.Performance/Linq2Sql/DataClasses.designer.cs
  class DataClassesDataContext (line 26) | [global::System.Data.Linq.Mapping.DatabaseAttribute(Name = "tempdb")]
    method OnCreated (line 33) | partial void OnCreated();
    method InsertPost (line 34) | partial void InsertPost(Post instance);
    method UpdatePost (line 35) | partial void UpdatePost(Post instance);
    method DeletePost (line 36) | partial void DeletePost(Post instance);
    method DataClassesDataContext (line 39) | public DataClassesDataContext(string connection) :
    method DataClassesDataContext (line 45) | public DataClassesDataContext(System.Data.IDbConnection connection) :
    method DataClassesDataContext (line 51) | public DataClassesDataContext(string connection, System.Data.Linq.Mapp...
    method DataClassesDataContext (line 57) | public DataClassesDataContext(System.Data.IDbConnection connection, Sy...
  class Post (line 72) | [global::System.Data.Linq.Mapping.TableAttribute(Name = "dbo.Posts")]
    method OnLoaded (line 105) | partial void OnLoaded();
    method OnValidate (line 106) | partial void OnValidate(System.Data.Linq.ChangeAction action);
    method OnCreated (line 107) | partial void OnCreated();
    method OnIdChanging (line 108) | partial void OnIdChanging(int value);
    method OnIdChanged (line 109) | partial void OnIdChanged();
    method OnTextChanging (line 110) | partial void OnTextChanging(string value);
    method OnTextChanged (line 111) | partial void OnTextChanged();
    method OnCreationDateChanging (line 112) | partial void OnCreationDateChanging(System.DateTime value);
    method OnCreationDateChanged (line 113) | partial void OnCreationDateChanged();
    method OnLastChangeDateChanging (line 114) | partial void OnLastChangeDateChanging(System.DateTime value);
    method OnLastChangeDateChanged (line 115) | partial void OnLastChangeDateChanged();
    method OnCounter1Changing (line 116) | partial void OnCounter1Changing(System.Nullable<int> value);
    method OnCounter1Changed (line 117) | partial void OnCounter1Changed();
    method OnCounter2Changing (line 118) | partial void OnCounter2Changing(System.Nullable<int> value);
    method OnCounter2Changed (line 119) | partial void OnCounter2Changed();
    method OnCounter3Changing (line 120) | partial void OnCounter3Changing(System.Nullable<int> value);
    method OnCounter3Changed (line 121) | partial void OnCounter3Changed();
    method OnCounter4Changing (line 122) | partial void OnCounter4Changing(System.Nullable<int> value);
    method OnCounter4Changed (line 123) | partial void OnCounter4Changed();
    method OnCounter5Changing (line 124) | partial void OnCounter5Changing(System.Nullable<int> value);
    method OnCounter5Changed (line 125) | partial void OnCounter5Changed();
    method OnCounter6Changing (line 126) | partial void OnCounter6Changing(System.Nullable<int> value);
    method OnCounter6Changed (line 127) | partial void OnCounter6Changed();
    method OnCounter7Changing (line 128) | partial void OnCounter7Changing(System.Nullable<int> value);
    method OnCounter7Changed (line 129) | partial void OnCounter7Changed();
    method OnCounter8Changing (line 130) | partial void OnCounter8Changing(System.Nullable<int> value);
    method OnCounter8Changed (line 131) | partial void OnCounter8Changed();
    method OnCounter9Changing (line 132) | partial void OnCounter9Changing(System.Nullable<int> value);
    method OnCounter9Changed (line 133) | partial void OnCounter9Changed();
    method Post (line 136) | public Post()
    method SendPropertyChanging (line 405) | protected virtual void SendPropertyChanging()
    method SendPropertyChanged (line 413) | protected virtual void SendPropertyChanged(String propertyName)

FILE: benchmarks/Dapper.Tests.Performance/Massive/Massive.cs
  class ObjectExtensions (line 13) | public static class ObjectExtensions
    method AddParams (line 18) | public static void AddParams(this DbCommand cmd, params object[] args)
    method AddParam (line 28) | public static void AddParam(this DbCommand cmd, object item)
    method ToExpandoList (line 62) | public static List<dynamic> ToExpandoList(this IDataReader rdr)
    method RecordToExpando (line 72) | public static dynamic RecordToExpando(this IDataReader rdr)
    method ToExpando (line 83) | public static dynamic ToExpando(this object o)
    method ToDictionary (line 106) | public static IDictionary<string, object> ToDictionary(this object thi...
  class DynamicModel (line 114) | public class DynamicModel
    method DynamicModel (line 123) | public DynamicModel(string connectionStringName = "", string tableName...
    method Query (line 148) | public virtual IEnumerable<dynamic> Query(string sql, params object[] ...
    method Query (line 160) | public virtual IEnumerable<dynamic> Query(string sql, DbConnection con...
    method Scalar (line 173) | public virtual object Scalar(string sql, params object[] args)
    method CreateCommand (line 185) | private DbCommand CreateCommand(string sql, DbConnection conn, params ...
    method OpenConnection (line 197) | public virtual DbConnection OpenConnection()
    method BuildCommands (line 209) | public virtual List<DbCommand> BuildCommands(params object[] things)
    method Save (line 231) | public virtual int Save(params object[] things)
    method Execute (line 237) | public virtual int Execute(DbCommand command)
    method Execute (line 244) | public virtual int Execute(IEnumerable<DbCommand> commands)
    method HasPrimaryKey (line 268) | public virtual bool HasPrimaryKey(object o)
    method GetPrimaryKey (line 276) | public virtual object GetPrimaryKey(object o)
    method CreateInsertCommand (line 286) | public virtual DbCommand CreateInsertCommand(object o)
    method CreateUpdateCommand (line 319) | public virtual DbCommand CreateUpdateCommand(object o, object key)
    method CreateDeleteCommand (line 356) | public virtual DbCommand CreateDeleteCommand(string where = "", object...
    method Insert (line 374) | public virtual object Insert(object o)
    method Update (line 391) | public virtual int Update(object o, object key)
    method Delete (line 398) | public int Delete(object key = null, string where = "", params object[...
    method All (line 406) | public virtual IEnumerable<dynamic> All(string where = "", string orde...
    method Paged (line 419) | public virtual dynamic Paged(string where = "", string orderBy = "", s...
    method Single (line 447) | public virtual dynamic Single(object key, string columns = "*")

FILE: benchmarks/Dapper.Tests.Performance/NHibernate/NHibernateHelper.cs
  class NHibernateHelper (line 7) | public static class NHibernateHelper
    method OpenSession (line 27) | public static IStatelessSession OpenSession()

FILE: benchmarks/Dapper.Tests.Performance/PetaPoco/PetaPoco.cs
  class ExplicitColumns (line 16) | [AttributeUsage(AttributeTargets.Class)]
  class Ignore (line 21) | [AttributeUsage(AttributeTargets.Property)]
  class Column (line 27) | [AttributeUsage(AttributeTargets.Property)]
    method Column (line 30) | public Column() { }
    method Column (line 31) | public Column(string name) { Name = name; }
  class ResultColumn (line 36) | [AttributeUsage(AttributeTargets.Property)]
    method ResultColumn (line 39) | public ResultColumn() { }
    method ResultColumn (line 40) | public ResultColumn(string name) : base(name) { }
  class TableName (line 44) | [AttributeUsage(AttributeTargets.Class)]
    method TableName (line 47) | public TableName(string tableName)
  class PrimaryKey (line 56) | [AttributeUsage(AttributeTargets.Class)]
    method PrimaryKey (line 59) | public PrimaryKey(string primaryKey)
  class Page (line 68) | public class Page<T> where T : new()
  type IMapper (line 78) | public interface IMapper
    method GetTableInfo (line 80) | void GetTableInfo(Type t, ref string tableName, ref string primaryKey);
    method MapPropertyToColumn (line 81) | bool MapPropertyToColumn(PropertyInfo pi, ref string columnName, ref b...
    method GetValueConverter (line 82) | Func<object, object> GetValueConverter(PropertyInfo pi, Type SourceType);
  class Database (line 86) | public class Database : IDisposable
    method Database (line 88) | public Database(DbConnection connection)
    method Database (line 96) | public Database(string connectionString, string providerName)
    method Database (line 103) | public Database(string connectionStringName)
    method CommonConstruct (line 127) | private
    method Dispose (line 145) | public void Dispose()
    method IsMySql (line 152) | private bool IsMySql() { return string.Compare(_providerName, "MySql.D...
    method IsSqlServer (line 153) | private bool IsSqlServer() { return string.Compare(_providerName, "Sys...
    method OpenSharedConnection (line 156) | public void OpenSharedConnection()
    method CloseSharedConnection (line 168) | public void CloseSharedConnection()
    method OnBeginTransaction (line 182) | public virtual void OnBeginTransaction() { }
    method OnEndTransaction (line 183) | public virtual void OnEndTransaction() { }
    method BeginTransaction (line 188) | public void BeginTransaction()
    method CleanupTransaction (line 201) | private
    method AbortTransaction (line 220) | public void AbortTransaction()
    method CompleteTransaction (line 228) | public void CompleteTransaction()
    method ProcessParams (line 236) | public static string ProcessParams(string _sql, object[] args_src, Lis...
    method AddParam (line 274) | private static void AddParam(DbCommand cmd, object item, string Parame...
    method CreateCommand (line 307) | public DbCommand CreateCommand(DbConnection connection, string sql, pa...
    method OnException (line 370) | public virtual void OnException(Exception x)
    method Execute (line 377) | public int Execute(string sql, params object[] args)
    method Execute (line 401) | public int Execute(Sql sql)
    method ExecuteScalar (line 407) | public T ExecuteScalar<T>(string sql, params object[] args)
    method ExecuteScalar (line 432) | public T ExecuteScalar<T>(Sql sql)
    method AddSelectClause (line 439) | private string AddSelectClause<T>(string sql)
    method Fetch (line 455) | public List<T> Fetch<T>(string sql, params object[] args) where T : new()
    method FirstOrDefault (line 494) | public T FirstOrDefault<T>(string sql, params object[] args) where T :...
    method SingleOrDefault (line 531) | public T SingleOrDefault<T>(string sql, params object[] args) where T ...
    method SplitSqlForPaging (line 577) | public static bool SplitSqlForPaging(string sql, out string sqlCount, ...
    method Page (line 606) | public Page<T> Page<T>(long page, long itemsPerPage, string sql, param...
    method Page (line 647) | public Page<T> Page<T>(long page, long itemsPerPage, Sql sql) where T ...
    method Query (line 653) | public IEnumerable<T> Query<T>(string sql, params object[] args) where...
    method Fetch (line 698) | public List<T> Fetch<T>(Sql sql) where T : new()
    method Query (line 703) | public IEnumerable<T> Query<T>(Sql sql) where T : new()
    method Single (line 708) | public T Single<T>(string sql, params object[] args) where T : new()
    method First (line 717) | public T First<T>(string sql, params object[] args) where T : new()
    method Single (line 726) | public T Single<T>(Sql sql) where T : new()
    method SingleOrDefault (line 731) | public T SingleOrDefault<T>(Sql sql) where T : new()
    method FirstOrDefault (line 736) | public T FirstOrDefault<T>(Sql sql) where T : new()
    method First (line 741) | public T First<T>(Sql sql) where T : new()
    method Insert (line 749) | public object Insert(string tableName, string primaryKeyName, object p...
    method Insert (line 810) | public object Insert(object poco)
    method Update (line 817) | public int Update(string tableName, string primaryKeyName, object poco...
    method Update (line 879) | public int Update(string tableName, string primaryKeyName, object poco)
    method Update (line 884) | public int Update(object poco)
    method Update (line 889) | public int Update(object poco, object primaryKeyValue)
    method Update (line 895) | public int Update<T>(string sql, params object[] args)
    method Update (line 901) | public int Update<T>(Sql sql)
    method Delete (line 907) | public int Delete(string tableName, string primaryKeyName, object poco)
    method Delete (line 912) | public int Delete(string tableName, string primaryKeyName, object poco...
    method Delete (line 929) | public int Delete(object poco)
    method Delete (line 935) | public int Delete<T>(string sql, params object[] args)
    method Delete (line 941) | public int Delete<T>(Sql sql)
    method IsNew (line 948) | public bool IsNew(string primaryKeyName, object poco)
    method IsNew (line 992) | public bool IsNew(object poco)
    method Save (line 999) | public void Save(string tableName, string primaryKeyName, object poco)
    method Save (line 1011) | public void Save(object poco)
    class PocoColumn (line 1041) | internal class PocoColumn
    class PocoData (line 1048) | internal class PocoData
      method ForType (line 1050) | public static PocoData ForType(Type t)
      method PocoData (line 1063) | public PocoData(Type t)
      method GetFactory (line 1125) | public Func<IDataReader, T> GetFactory<T>(string key, bool ForceDate...
    class ShareableConnection (line 1275) | private class ShareableConnection : IDisposable
      method ShareableConnection (line 1277) | public ShareableConnection(Database db)
      method Dispose (line 1287) | public void Dispose()
  class Transaction (line 1308) | public class Transaction : IDisposable
    method Transaction (line 1310) | public Transaction(Database db)
    method Complete (line 1316) | public void Complete()
    method Dispose (line 1322) | public void Dispose()
  class Sql (line 1331) | public class Sql
    method Sql (line 1333) | public Sql()
    method Sql (line 1337) | public Sql(string sql, params object[] args)
    method Build (line 1349) | private void Build()
    method Append (line 1381) | public Sql Append(Sql sql)
    method Append (line 1391) | public Sql Append(string sql, params object[] args)
    method Where (line 1396) | public Sql Where(string sql, params object[] args)
    method OrderBy (line 1401) | public Sql OrderBy(params object[] args)
    method Select (line 1406) | public Sql Select(params object[] args)
    method From (line 1411) | public Sql From(params object[] args)
    method Is (line 1416) | private static bool Is(Sql sql, string sqltype)
    method Build (line 1421) | public void Build(StringBuilder sb, List<object> args, Sql lhs)

FILE: benchmarks/Dapper.Tests.Performance/Post.cs
  class Post (line 5) | [ServiceStack.DataAnnotations.Alias("Posts")]

FILE: benchmarks/Dapper.Tests.Performance/Program.cs
  class Program (line 9) | public static class Program
    method Main (line 11) | public static void Main(string[] args)
    method EnsureDBSetup (line 52) | private static void EnsureDBSetup()
    method WriteLineColor (line 93) | public static void WriteLineColor(string message, ConsoleColor color)
    method WriteColor (line 101) | public static void WriteColor(string message, ConsoleColor color)

FILE: benchmarks/Dapper.Tests.Performance/SqlDataReaderHelper.cs
  class SqlDataReaderHelper (line 7) | public static class SqlDataReaderHelper
    method GetNullableString (line 9) | [MethodImpl(MethodImplOptions.AggressiveInlining)]
    method GetNullableValue (line 20) | [MethodImpl(MethodImplOptions.AggressiveInlining)]

FILE: benchmarks/Dapper.Tests.Performance/XPO/Post.cs
  class Post (line 6) | [Persistent("Posts")]
    method Post (line 23) | public Post(Session session) : base(session) { }

FILE: tests/Dapper.Tests/AsyncTests.cs
  class SystemSqlClientAsyncTests (line 14) | [Collection(NonParallelDefinition.Name)]
  class MicrosoftSqlClientAsyncTests (line 17) | [Collection(NonParallelDefinition.Name)]
  class SystemSqlClientAsyncQueryCacheTests (line 21) | [Collection(NonParallelDefinition.Name)]
    method SystemSqlClientAsyncQueryCacheTests (line 24) | public SystemSqlClientAsyncQueryCacheTests(ITestOutputHelper log) : ba...
  class MicrosoftSqlClientAsyncQueryCacheTests (line 27) | [Collection(NonParallelDefinition.Name)]
    method MicrosoftSqlClientAsyncQueryCacheTests (line 30) | public MicrosoftSqlClientAsyncQueryCacheTests(ITestOutputHelper log) :...
  class AsyncTests (line 35) | public abstract class AsyncTests<TProvider> : TestBase<TProvider> where ...
    method TestBasicStringUsageAsync (line 41) | [Fact]
    method TestBasicStringUsageUnbufferedDynamicAsync (line 49) | [Fact]
    method TestBasicStringUsageUnbufferedAsync (line 63) | [Fact]
    method TestBasicStringUsageUnbufferedAsync_Cancellation (line 76) | [Fact]
    method TestBasicStringUsageViaGridReaderUnbufferedAsync (line 94) | [Fact]
    method TestBasicStringUsageViaGridReaderUnbufferedDynamicAsync (line 114) | [Fact]
    method TestBasicStringUsageViaGridReaderUnbufferedAsync_Cancellation (line 134) | [Fact]
    method TestBasicStringUsageQueryFirstAsync (line 161) | [Fact]
    method TestBasicStringUsageQueryFirstAsyncDynamic (line 168) | [Fact]
    method TestBasicStringUsageQueryFirstOrDefaultAsync (line 175) | [Fact]
    method TestBasicStringUsageQueryFirstOrDefaultAsyncDynamic (line 182) | [Fact]
    method TestBasicStringUsageQuerySingleAsyncDynamic (line 189) | [Fact]
    method TestBasicStringUsageQuerySingleAsync (line 196) | [Fact]
    method TestBasicStringUsageQuerySingleOrDefaultAsync (line 203) | [Fact]
    method TestBasicStringUsageQuerySingleOrDefaultAsyncDynamic (line 210) | [Fact]
    method TestBasicStringUsageAsyncNonBuffered (line 217) | [Fact]
    method TestLongOperationWithCancellation (line 225) | [Fact]
    method TestBasicStringUsageClosedAsync (line 243) | [Fact]
    method TestQueryDynamicAsync (line 252) | [Fact]
    method TestClassWithStringUsageAsync (line 260) | [Fact]
    method TestExecuteAsync (line 268) | [Fact]
    method TestExecuteClosedConnAsyncInner (line 275) | [Fact]
    method TestMultiMapWithSplitAsync (line 284) | [Fact]
    method TestMultiMapArbitraryWithSplitAsync (line 303) | [Fact]
    method TestMultiMapWithSplitClosedConnAsync (line 323) | [Fact]
    method TestMultiAsync (line 345) | [Fact]
    method TestMultiConversionAsync (line 353) | [Fact]
    method TestMultiAsyncViaFirstOrDefault (line 361) | [Fact]
    method TestMultiClosedConnAsync (line 372) | [Fact]
    method TestMultiClosedConnAsyncViaFirstOrDefault (line 381) | [Fact]
    method ExecuteReaderOpenAsync (line 393) | [Fact]
    method ExecuteReaderClosedAsync (line 406) | [Fact]
    method LiteralReplacementOpen (line 420) | [Fact]
    method LiteralReplacementClosed (line 426) | [Fact]
    method LiteralReplacement (line 433) | private static async Task LiteralReplacement(IDbConnection conn)
    method LiteralReplacementDynamicOpen (line 450) | [Fact]
    method LiteralReplacementDynamicClosed (line 456) | [Fact]
    method LiteralReplacementDynamic (line 463) | private static async Task LiteralReplacementDynamic(IDbConnection conn)
    method LiteralInAsync (line 478) | [Fact]
    method RunSequentialVersusParallelAsync (line 492) | [FactLongRunning]
    method RunSequentialVersusParallelSync (line 509) | [FactLongRunning]
    class BasicType (line 526) | private class BasicType
    method TypeBasedViaTypeAsync (line 531) | [Fact]
    method TypeBasedViaTypeAsyncFirstOrDefault (line 544) | [Fact]
    method Issue22_ExecuteScalarAsync (line 557) | [Fact]
    method Issue346_QueryAsyncConvert (line 576) | [Fact]
    method TestSupportForDynamicParametersOutputExpressionsAsync (line 583) | [Fact]
    method TestSupportForDynamicParametersOutputExpressions_ScalarAsync (line 614) | [Fact]
    method TestSupportForDynamicParametersOutputExpressions_Query_Default (line 642) | [Fact]
    method TestSupportForDynamicParametersOutputExpressions_QueryFirst (line 670) | [Fact]
    method TestSupportForDynamicParametersOutputExpressions_Query_BufferedAsync (line 698) | [Fact]
    method TestSupportForDynamicParametersOutputExpressions_Query_NonBufferedAsync (line 726) | [Fact]
    method TestSupportForDynamicParametersOutputExpressions_QueryMultipleAsync (line 754) | [Fact]
    method TestSubsequentQueriesSuccessAsync (line 789) | [Fact]
    class AsyncFoo0 (line 811) | private class AsyncFoo0 { public int Id { get; set; } }
    class AsyncFoo1 (line 813) | private class AsyncFoo1 { public int Id { get; set; } }
    class AsyncFoo2 (line 815) | private class AsyncFoo2 { public int Id { get; set; } }
    method TestSchemaChangedViaFirstOrDefaultAsync (line 817) | [Fact]
    method TestMultiMapArbitraryMapsAsync (line 839) | [Fact]
    method Issue157_ClosedReaderAsync (line 934) | [Fact]
    method TestAtEscaping (line 949) | [Fact]
    method Issue1281_DataReaderOutOfOrderAsync (line 960) | [Fact]
    method Issue563_QueryAsyncShouldThrowException (line 971) | [Fact]
  class AsyncQueryCacheTests (line 983) | [Collection(NonParallelDefinition.Name)]
    method AsyncQueryCacheTests (line 987) | public AsyncQueryCacheTests(ITestOutputHelper log) => _log = log;
    method Dispose (line 991) | public override void Dispose()
    method AssertNoCacheWorksForQueryMultiple (line 998) | [Fact]
    method AssertNoCacheWorksForMultiMap (line 1025) | [Fact]
    method AssertNoCacheWorksForQueryAsync (line 1043) | [Fact]

FILE: tests/Dapper.Tests/ConstructorTests.cs
  class SystemSqlClientConstructorTests (line 7) | [Collection("ConstructorTests")]
  class MicrosoftSqlClientConstructorTests (line 10) | [Collection("ConstructorTests")]
  class ConstructorTests (line 14) | public abstract class ConstructorTests<TProvider> : TestBase<TProvider> ...
    method TestAbstractInheritance (line 16) | [Fact]
    method TestMultipleConstructors (line 27) | [Fact]
    method TestConstructorsWithAccessModifiers (line 35) | [Fact]
    method TestNoDefaultConstructor (line 43) | [Fact]
    method TestNoDefaultConstructorWithChar (line 55) | [Fact]
    method TestNoDefaultConstructorWithEnum (line 66) | [Fact]
    method ExplicitConstructors (line 75) | [Fact]
    class _ExplicitConstructors (line 92) | private class _ExplicitConstructors
      method _ExplicitConstructors (line 99) | public _ExplicitConstructors() { /* yep */ }
      method _ExplicitConstructors (line 101) | [ExplicitConstructor]
      method GetWentThroughProperConstructor (line 107) | public bool GetWentThroughProperConstructor()
    class AbstractInheritance (line 113) | public static class AbstractInheritance
      class Order (line 115) | public abstract class Order
      class ConcreteOrder (line 124) | public class ConcreteOrder : Order
    class MultipleConstructors (line 130) | private class MultipleConstructors
      method MultipleConstructors (line 132) | public MultipleConstructors()
      method MultipleConstructors (line 137) | public MultipleConstructors(int a, string b)
    class ConstructorsWithAccessModifiers (line 147) | private class ConstructorsWithAccessModifiers
      method ConstructorsWithAccessModifiers (line 149) | private ConstructorsWithAccessModifiers()
      method ConstructorsWithAccessModifiers (line 153) | public ConstructorsWithAccessModifiers(int a, string b)
    class NoDefaultConstructor (line 163) | private class NoDefaultConstructor
      method NoDefaultConstructor (line 165) | public NoDefaultConstructor(int a1, int? b1, float f1, string s1, Gu...
    class NoDefaultConstructorWithChar (line 181) | private class NoDefaultConstructorWithChar
      method NoDefaultConstructorWithChar (line 183) | public NoDefaultConstructorWithChar(char c1, char? c2, char? c3)
    class NoDefaultConstructorWithEnum (line 195) | private class NoDefaultConstructorWithEnum
      method NoDefaultConstructorWithEnum (line 197) | public NoDefaultConstructorWithEnum(ShortEnum e1, ShortEnum? n1, Sho...
    class WithPrivateConstructor (line 209) | private class WithPrivateConstructor
      method WithPrivateConstructor (line 212) | private WithPrivateConstructor()
    method TestWithNonPublicConstructor (line 217) | [Fact]
    method CtorWithUnderscores (line 224) | [Fact]
    method CtorWithoutUnderscores (line 233) | [Fact]
    method Issue1993_PreferPropertyOverField (line 243) | [Fact]
    method Issue1993_Query (line 268) | [Fact]
    class ShowIssue1993 (line 289) | public class ShowIssue1993
    class Type_ParamsWithUnderscores (line 309) | class Type_ParamsWithUnderscores
      method Type_ParamsWithUnderscores (line 313) | public Type_ParamsWithUnderscores(string first_name, string last_name)
    class Type_ParamsWithoutUnderscores (line 319) | class Type_ParamsWithoutUnderscores
      method Type_ParamsWithoutUnderscores (line 323) | public Type_ParamsWithoutUnderscores(string firstName, string lastName)

FILE: tests/Dapper.Tests/DataReaderTests.cs
  class SystemSqlClientDataReaderTests (line 8) | [Collection("DataReaderTests")]
  class MicrosoftSqlClientDataReaderTests (line 11) | [Collection("DataReaderTests")]
  class DataReaderTests (line 15) | public abstract class DataReaderTests<TProvider> : TestBase<TProvider> w...
    method GetSameReaderForSameShape_IDataReader (line 17) | [Fact]
    method GetSameReaderForSameShape_DbDataReader (line 54) | [Fact]
    method TestTreatIntAsABool (line 86) | [Fact]
    method DiscriminatedUnion_IDataReader (line 96) | [Fact]
    method DiscriminatedUnion_DbDataReader (line 137) | [Fact]
    method DiscriminatedUnionWithMultiMapping_IDataReader (line 176) | [Fact]
    method DiscriminatedUnionWithMultiMapping_DbDataReader (line 232) | [Fact]
    class Discriminated_BaseType (line 286) | private abstract class Discriminated_BaseType
    class Discriminated_Foo (line 291) | private class Discriminated_Foo : Discriminated_BaseType
    class Discriminated_Bar (line 297) | private class Discriminated_Bar : Discriminated_BaseType
    class DiscriminatedWithMultiMapping_BaseType (line 303) | private abstract class DiscriminatedWithMultiMapping_BaseType : Discri...
    class DiscriminatedWithMultiMapping_Foo (line 308) | private class DiscriminatedWithMultiMapping_Foo : DiscriminatedWithMul...
    class DiscriminatedWithMultiMapping_Bar (line 315) | private class DiscriminatedWithMultiMapping_Bar : DiscriminatedWithMul...

FILE: tests/Dapper.Tests/DateTimeOnlyTests.cs
  class MicrosoftSqlClientDateTimeOnlyTests (line 13) | [Collection("DateTimeOnlyTests")]
  class DateTimeOnlyTests (line 16) | public abstract class DateTimeOnlyTests<TProvider> : TestBase<TProvider>...
    class HazDateTimeOnly (line 18) | public class HazDateTimeOnly
    method TypedInOut (line 27) | [Fact]
    method TypedInOutAsync (line 47) | [Fact]
    method UntypedInOut (line 67) | [Fact]

FILE: tests/Dapper.Tests/DecimalTests.cs
  class SystemSqlClientDecimalTests (line 8) | [Collection("DecimalTests")]
  class MicrosoftSqlClientDecimalTests (line 11) | [Collection("DecimalTests")]
  class DecimalTests (line 14) | public abstract class DecimalTests<TProvider> : TestBase<TProvider> wher...
    method Issue261_Decimals (line 16) | [Fact]
    method Issue261_Decimals_ADONET_SetViaBaseClass (line 27) | [Fact]
    method Issue261_Decimals_ADONET_SetViaConcreteClass (line 30) | [Fact]
    method Issue261_Decimals_ADONET (line 33) | private void Issue261_Decimals_ADONET(bool setPrecisionScaleViaAbstrac...
    method BasicDecimals (line 72) | [Fact]
    method TestDoubleDecimalConversions_SO18228523_RightWay (line 79) | [Fact]
    method TestDoubleDecimalConversions_SO18228523_WrongWay (line 90) | [Fact]
    method TestDoubleDecimalConversions_SO18228523_Nulls (line 101) | [Fact]
    class HasDoubleDecimal (line 112) | private class HasDoubleDecimal

FILE: tests/Dapper.Tests/EnumTests.cs
  class SystemSqlClientEnumTests (line 7) | [Collection("EnumTests")]
  class MicrosoftSqlClientEnumTests (line 10) | [Collection("EnumTests")]
  class EnumTests (line 13) | public abstract class EnumTests<TProvider> : TestBase<TProvider> where T...
    method TestEnumWeirdness (line 15) | [Fact]
    method TestEnumStrings (line 22) | [Fact]
    method TestEnumParamsWithNullable (line 32) | [Fact]
    method TestEnumParamsWithoutNullable (line 44) | [Fact]
    type EnumParam (line 56) | private enum EnumParam : short
    class EnumParamObject (line 63) | private class EnumParamObject
    class EnumParamObjectNonNullable (line 70) | private class EnumParamObjectNonNullable
    type TestEnum (line 77) | private enum TestEnum : byte
    class TestEnumClass (line 82) | private class TestEnumClass
    class TestEnumClassNoNull (line 87) | private class TestEnumClassNoNull
    method AdoNetEnumValue (line 92) | [Fact]
    method DapperEnumValue_SqlServer (line 108) | [Fact]
    type SO27024806Enum (line 111) | private enum SO27024806Enum
    class SO27024806Class (line 117) | private class SO27024806Class
      method SO27024806Class (line 119) | public SO27024806Class(SO27024806Enum myField)
    method SO27024806_TestVarcharEnumMemberWithExplicitConstructor (line 127) | [Fact]

FILE: tests/Dapper.Tests/Helpers/Attributes.cs
  class FactAttribute (line 14) | [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
  class TheoryAttribute (line 30) | [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
  class FactLongRunningAttribute (line 34) | [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
    method FactLongRunningAttribute (line 37) | public FactLongRunningAttribute()
  class FactRequiredCompatibilityLevelAttribute (line 47) | [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
    method FactRequiredCompatibilityLevelAttribute (line 50) | public FactRequiredCompatibilityLevelAttribute(int level) : base()
    method FactRequiredCompatibilityLevelAttribute (line 60) | static FactRequiredCompatibilityLevelAttribute()
  class FactUnlessCaseSensitiveDatabaseAttribute (line 71) | [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
    method FactUnlessCaseSensitiveDatabaseAttribute (line 74) | public FactUnlessCaseSensitiveDatabaseAttribute() : base()
    method FactUnlessCaseSensitiveDatabaseAttribute (line 83) | static FactUnlessCaseSensitiveDatabaseAttribute()

FILE: tests/Dapper.Tests/Helpers/Common.cs
  class Common (line 8) | public static class Common
    method GetSomeType (line 10) | public static Type GetSomeType() => typeof(SomeType);
    method DapperEnumValue (line 12) | public static void DapperEnumValue(IDbConnection connection)
    method TestDateTime (line 37) | public static void TestDateTime(DbConnection connection)
    class NullableDatePerson (line 62) | private class NullableDatePerson

FILE: tests/Dapper.Tests/Helpers/IsExternalInit.cs
  class IsExternalInit (line 4) | internal static class IsExternalInit

FILE: tests/Dapper.Tests/Helpers/SqlServerTypesLoader.cs
  class SqlServerTypesLoader (line 10) | internal static class SqlServerTypesLoader
    method LoadLibrary (line 15) | [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = t...
    method LoadNativeAssemblies (line 25) | public static void LoadNativeAssemblies(string rootApplicationPath)
    method LoadNativeAssembly (line 44) | private static void LoadNativeAssembly(string nativeBinaryPath, string...

FILE: tests/Dapper.Tests/Helpers/TransactedConnection.cs
  class TransactedConnection (line 6) | public class TransactedConnection : IDbConnection
    method TransactedConnection (line 11) | public TransactedConnection(IDbConnection conn, IDbTransaction tran)
    method BeginTransaction (line 29) | public IDbTransaction BeginTransaction(IsolationLevel il)
    method BeginTransaction (line 34) | public IDbTransaction BeginTransaction() => _tran;
    method ChangeDatabase (line 36) | public void ChangeDatabase(string databaseName) => _conn.ChangeDatabas...
    method Close (line 38) | public void Close() => _conn.Close();
    method CreateCommand (line 40) | public IDbCommand CreateCommand()
    method Dispose (line 48) | public void Dispose() => _conn.Dispose();
    method Open (line 50) | public void Open() => _conn.Open();

FILE: tests/Dapper.Tests/Helpers/XunitSkippable.cs
  class Skip (line 12) | public static class Skip
    method Inconclusive (line 14) | public static void Inconclusive(string reason = "inconclusive")
    method If (line 17) | public static void If<T>(object obj, string? reason = null)
  class SkipTestException (line 25) | public class SkipTestException : Exception
    method SkipTestException (line 27) | public SkipTestException(string reason) : base(reason)
  class FactDiscoverer (line 33) | public class FactDiscoverer : Xunit.Sdk.FactDiscoverer
    method FactDiscoverer (line 35) | public FactDiscoverer(IMessageSink diagnosticMessageSink) : base(diagn...
    method CreateTestCase (line 37) | protected override IXunitTestCase CreateTestCase(ITestFrameworkDiscove...
  class TheoryDiscoverer (line 41) | public class TheoryDiscoverer : Xunit.Sdk.TheoryDiscoverer
    method TheoryDiscoverer (line 43) | public TheoryDiscoverer(IMessageSink diagnosticMessageSink) : base(dia...
    method CreateTestCasesForDataRow (line 45) | protected override IEnumerable<IXunitTestCase> CreateTestCasesForDataR...
    method CreateTestCasesForSkip (line 48) | protected override IEnumerable<IXunitTestCase> CreateTestCasesForSkip(...
    method CreateTestCasesForTheory (line 51) | protected override IEnumerable<IXunitTestCase> CreateTestCasesForTheor...
    method CreateTestCasesForSkippedDataRow (line 54) | protected override IEnumerable<IXunitTestCase> CreateTestCasesForSkipp...
  class SkippableTestCase (line 58) | public class SkippableTestCase : XunitTestCase
    method GetDisplayName (line 60) | protected override string GetDisplayName(IAttributeInfo factAttribute,...
    method SkippableTestCase (line 63) | [Obsolete("Called by the de-serializer; should only be called by deriv...
    method SkippableTestCase (line 66) | public SkippableTestCase(IMessageSink diagnosticMessageSink, TestMetho...
    method RunAsync (line 71) | public override async Task<RunSummary> RunAsync(
  class SkippableTheoryTestCase (line 84) | public class SkippableTheoryTestCase : XunitTheoryTestCase
    method GetDisplayName (line 86) | protected override string GetDisplayName(IAttributeInfo factAttribute,...
    method SkippableTheoryTestCase (line 89) | [Obsolete("Called by the de-serializer; should only be called by deriv...
    method SkippableTheoryTestCase (line 92) | public SkippableTheoryTestCase(IMessageSink diagnosticMessageSink, Tes...
    method RunAsync (line 95) | public override async Task<RunSummary> RunAsync(
  class NamedSkippedDataRowTestCase (line 108) | public class NamedSkippedDataRowTestCase : XunitSkippedDataRowTestCase
    method GetDisplayName (line 110) | protected override string GetDisplayName(IAttributeInfo factAttribute,...
    method NamedSkippedDataRowTestCase (line 113) | [Obsolete("Called by the de-serializer; should only be called by deriv...
    method NamedSkippedDataRowTestCase (line 116) | public NamedSkippedDataRowTestCase(IMessageSink diagnosticMessageSink,...
  class SkippableMessageBus (line 120) | public class SkippableMessageBus : IMessageBus
    method SkippableMessageBus (line 123) | public SkippableMessageBus(IMessageBus innerBus) => InnerBus = innerBus;
    method Dispose (line 127) | public void Dispose() { }
    method QueueMessage (line 129) | public bool QueueMessage(IMessageSinkMessage message)
  class XUnitExtensions (line 144) | internal static class XUnitExtensions
    method StripName (line 146) | internal static string StripName(this string name) =>
    method Update (line 149) | public static RunSummary Update(this RunSummary summary, SkippableMess...

FILE: tests/Dapper.Tests/LiteralTests.cs
  class SystemSqlClientLiteralTests (line 6) | [Collection("LiteralTests")]
  class MicrosoftSqlClientLiteralTests (line 9) | [Collection("LiteralTests")]
  class LiteralTests (line 12) | public abstract class LiteralTests<TProvider> : TestBase<TProvider> wher...
    method LiteralReplacementEnumAndString (line 14) | [Fact]
    method LiteralReplacementDynamicEnumAndString (line 27) | [Fact]
    method LiteralReplacementBoolean (line 43) | [Fact]
    method LiteralReplacementWithIn (line 53) | [Fact]
    class MyRow (line 60) | private class MyRow
    method LiteralIn (line 65) | [Fact]
    method LiteralReplacement (line 79) | [Fact]
    method LiteralReplacementDynamic (line 92) | [Fact]

FILE: tests/Dapper.Tests/MiscTests.cs
  class IsExternalInit (line 15) | [EditorBrowsable(EditorBrowsableState.Never)]
  class SystemSqlClientMiscTests (line 24) | [Collection("MiscTests")]
  class MicrosoftSqlClientMiscTests (line 27) | [Collection("MiscTests")]
  class MiscTests (line 30) | public abstract class MiscTests<TProvider> : TestBase<TProvider> where T...
    method TestNullableGuidSupport (line 32) | [Fact]
    method TestNonNullableGuidSupport (line 43) | [Fact]
    type Car (line 51) | private struct Car
      type TrapEnum (line 53) | public enum TrapEnum : int
    type CarWithAllProps (line 65) | private struct CarWithAllProps
    type PositionalCarRecord (line 72) | private record PositionalCarRecord(int Age, Car.TrapEnum Trap, string?...
    type NominalCarRecord (line 77) | private record NominalCarRecord
    method TestStructs (line 84) | [Fact]
    method TestPositionalRecord (line 94) | [Fact]
    method TestNominalRecord (line 104) | [Fact]
    method TestStructAsParam (line 114) | [Fact]
    method SelectListInt (line 126) | [Fact]
    method SelectBinary (line 132) | [Fact]
    method TestSchemaChanged (line 138) | [Fact]
    method TestSchemaChangedViaFirstOrDefault (line 158) | [Fact]
    method Test_Single_First_Default (line 180) | [Fact]
    method TestConversionExceptionMessages (line 216) | [Fact]
    class NullTestType (line 291) | private class NullTestType
    method TestStrings (line 297) | [Fact]
    method CheckComplexConcat (line 304) | [Fact]
    method TestExtraFields (line 337) | [Fact]
    method TestStrongType (line 348) | [Fact]
    method TestSimpleNull (line 359) | [Fact]
    method TestExpando (line 365) | [Fact]
    method TestStringList (line 376) | [Fact]
    method TestExecuteCommand (line 389) | [Fact]
    method TestExecuteMultipleCommand (line 402) | [Fact]
    class Student (line 419) | private class Student
    method TestExecuteMultipleCommandStrongType (line 425) | [Fact]
    method TestExecuteMultipleCommandObjectArray (line 446) | [Fact]
    class TestObj (line 456) | private class TestObj
    method TestSetInternal (line 473) | [Fact]
    method TestSetPrivate (line 479) | [Fact]
    method TestExpandWithNullableFields (line 485) | [Fact]
    method TestEnumeration (line 493) | [Fact]
    method TestEnumerationDynamic (line 520) | [Fact]
    method TestNakedBigInt (line 547) | [Fact]
    method TestBigIntMember (line 555) | [Fact]
    class WithBigInt (line 566) | private class WithBigInt
    method TestFieldsAndPrivates (line 571) | [Fact]
    class TestFieldCaseAndPrivatesEntity (line 583) | private class TestFieldCaseAndPrivatesEntity
      method GetB (line 588) | public int GetB() { return b; }
      method GetD (line 593) | public int GetD() { return d; }
    class InheritanceTest1 (line 603) | private class InheritanceTest1
    class InheritanceTest2 (line 609) | private class InheritanceTest2 : InheritanceTest1
    method TestInheritance (line 615) | [Fact]
    method ExecuteReader (line 626) | [Fact]
    method TestDbString (line 639) | [Fact]
    method DbStringNullHandling (line 660) | [Fact]
    method TestDbStringToString (line 681) | [Fact]
    method TestDefaultDbStringDbType (line 701) | [Fact]
    method TestFastExpandoSupportsIDictionary (line 719) | [Fact]
    method TestDapperSetsPrivates (line 728) | [Fact]
    class PrivateDan (line 736) | private class PrivateDan
    method TestUnexpectedDataMessage (line 745) | [Fact]
    method TestUnexpectedButFilteredDataMessage (line 760) | [Fact]
    class WithBizarreData (line 768) | private class WithBizarreData
    class WithCharValue (line 774) | private class WithCharValue
    method TestCharInputAndOutput (line 780) | [Fact]
    method TestNullableCharInputAndOutputNonNull (line 793) | [Fact]
    method TestNullableCharInputAndOutputNull (line 806) | [Fact]
    method WorkDespiteHavingWrongStructColumnTypes (line 819) | [Fact]
    type CanHazInt (line 826) | private struct CanHazInt
    method TestInt16Usage (line 831) | [Fact]
    method TestInt32Usage (line 861) | [Fact]
    class WithInt16Values (line 891) | public class WithInt16Values
    class WithInt32Values (line 899) | public class WithInt32Values
    type IntEnum (line 907) | public enum IntEnum : int
    method Issue_40_AutomaticBoolConversion (line 912) | [Fact]
    class Issue40_User (line 922) | public class Issue40_User
      method Issue40_User (line 924) | public Issue40_User()
    method ExecuteFromClosed (line 935) | [Fact]
    method ExecuteInvalidFromClosed (line 943) | [Fact]
    method QueryFromClosed (line 951) | [Fact]
    method QueryInvalidFromClosed (line 960) | [Fact]
    method TestDynamicMutation (line 968) | [Fact]
    method TestIssue131 (line 997) | [Fact]
    method TestNullFromInt_NoRows (line 1015) | [Fact]
    method TestDapperTableMetadataRetrieval (line 1029) | [Fact]
    method DbStringAnsi (line 1048) | [Fact]
    class HasInt32 (line 1059) | private class HasInt32
    method DownwardIntegerConversion (line 1065) | [Fact]
    method TypeBasedViaDynamic (line 1076) | [Fact]
    method TypeBasedViaType (line 1090) | [Fact]
    method CheetViaDynamic (line 1103) | private T CheetViaDynamic<T>(T template, string query, object args)
    method Issue22_ExecuteScalar (line 1108) | [Fact]
    method Issue142_FailsNamedStatus (line 1127) | [Fact]
    class Issue142_Status (line 1137) | public class Issue142_Status
    class Issue142_StatusType (line 1142) | public class Issue142_StatusType
    type StatusType (line 1147) | public enum StatusType : byte
    type Status (line 1152) | public enum Status : byte
    method Issue178_SqlServer (line 1157) | [Fact]
    method QueryBasicWithoutQuery (line 1186) | [Fact]
    method QueryComplexWithoutQuery (line 1193) | [Fact]
    method Issue263_Timeout (line 1200) | [FactLongRunning]
    method SO30435185_InvalidTypeOwner (line 1211) | [Fact]
    method SO35470588_WrongValuePidValue (line 1246) | [Fact]
    class TPTable (line 1273) | public class TPTable
    method GetOnlyProperties (line 1279) | [Fact]
    class HazGetOnly (line 1287) | private class HazGetOnly
    method TestConstructorParametersWithUnderscoredColumns (line 1293) | [Fact]
    class HazGetOnlyAndCtor (line 1302) | private class HazGetOnlyAndCtor
      method HazGetOnlyAndCtor (line 1307) | public HazGetOnlyAndCtor(int idProperty, string nameProperty)
    method Issue1164_OverflowExceptionForByte (line 1314) | [Fact]
    method Issue1164_OverflowExceptionForUInt16 (line 1322) | [Fact]
    method Issue1164_OverflowExceptionForUInt32 (line 1330) | [Fact]
    method Issue1164_OverflowExceptionForUInt64 (line 1338) | [Fact]
    class Issue1164Object (line 1346) | private class Issue1164Object<T>
    type One (line 1351) | internal record struct One(int OID);
    type Two (line 1352) | internal record struct Two(int OID, string Name);
    method QuerySplitStruct (line 1354) | [Fact]
    method SetDynamicProperty_WithReferenceType_Succeeds (line 1362) | [Fact]
    method SetDynamicProperty_WithBoxedValueType_Succeeds (line 1374) | [Fact]
    method SetDynamicProperty_WithValueType_Succeeds (line 1386) | [Fact]

FILE: tests/Dapper.Tests/MultiMapTests.cs
  class SystemSqlClientMultiMapTests (line 9) | [Collection("MultiMapTests")]
  class MicrosoftSqlClientMultiMapTests (line 12) | [Collection("MultiMapTests")]
  class MultiMapTests (line 15) | public abstract class MultiMapTests<TProvider> : TestBase<TProvider> whe...
    method ParentChildIdentityAssociations (line 17) | [Fact]
    class Parent (line 37) | private class Parent
    class Child (line 43) | private class Child
    method TestMultiMap (line 48) | [Fact]
    method TestSchemaChangedMultiMap (line 87) | [Fact]
    method TestReadMultipleIntegersWithSplitOnAny (line 114) | [Fact]
    class Multi1 (line 123) | private class Multi1
    class Multi2 (line 128) | private class Multi2
    method QueryMultimapFromClosed (line 133) | [Fact]
    method TestMultiMapThreeTypesWithGridReader (line 143) | [Fact]
    method TestMultiMapperIsNotConfusedWithUnorderedCols (line 188) | [Fact]
    method TestMultiMapperSplitOnError (line 199) | [Fact]
    method TestMultiMapDynamic (line 206) | [Fact]
    method TestMultiMapWithSplit (line 241) | [Fact]
    method TestMultiMapWithSplitWithNullValue (line 258) | [Fact]
    method TestMultiMapWithSplitWithNullValueAndSpoofColumn (line 273) | [Fact]
    method TestMultiMappingVariations (line 291) | [Fact]
    class UserWithConstructor (line 336) | private class UserWithConstructor
      method UserWithConstructor (line 338) | public UserWithConstructor(int id, string name)
    class PostWithConstructor (line 348) | private class PostWithConstructor
      method PostWithConstructor (line 350) | public PostWithConstructor(int id, int ownerid, string content)
    method TestMultiMapWithConstructor (line 362) | [Fact]
    method TestMultiMapArbitraryMaps (line 398) | [Fact]
    method TestMultiMapGridReader (line 493) | [Fact]
    method TestFlexibleMultiMapping (line 538) | [Fact]
    method TestMultiMappingWithSplitOnSpaceBetweenCommas (line 559) | [Fact]
    class Extra (line 579) | private class Extra
    method TestMultiMappingWithNonReturnedProperty (line 585) | [Fact]
    class Post_DupeProp (line 605) | private class Post_DupeProp
    class Blog_DupeProp (line 613) | private class Blog_DupeProp
    method TestSplitWithMissingMembers (line 620) | [Fact]
    class Profile (line 643) | public class Profile
    class Topic (line 652) | public class Topic
    method TestInvalidSplitCausesNiceError (line 665) | [Fact]

FILE: tests/Dapper.Tests/NullTests.cs
  class SystemSqlClientNullTests (line 5) | [Collection(NonParallelDefinition.Name)]
  class MicrosoftSqlClientNullTests (line 8) | [Collection(NonParallelDefinition.Name)]
  class NullTests (line 12) | public abstract class NullTests<TProvider> : TestBase<TProvider> where T...
    method TestNullableDefault (line 14) | [Fact]
    method TestNullableApplyNulls (line 20) | [Fact]
    method TestNullable (line 26) | private void TestNullable(bool applyNulls)
    class NullTestClass (line 75) | private class NullTestClass
      method NullTestClass (line 84) | public NullTestClass()

FILE: tests/Dapper.Tests/ParameterTests.cs
  class SystemSqlClientParameterTests (line 24) | [Collection(NonParallelDefinition.Name)] // because it creates SQL types...
  class MicrosoftSqlClientParameterTests (line 27) | [Collection(NonParallelDefinition.Name)] // because it creates SQL types...
  class ParameterTests (line 30) | public abstract class ParameterTests<TProvider> : TestBase<TProvider> wh...
    class DbDynamicParams (line 32) | public class DbDynamicParams : SqlMapper.IDynamicParameters, IEnumerab...
      method GetEnumerator (line 35) | public IEnumerator<IDbDataParameter> GetEnumerator() { return parame...
      method GetEnumerator (line 36) | IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); }
      method Add (line 37) | public void Add(IDbDataParameter value)
      method AddParameters (line 42) | void SqlMapper.IDynamicParameters.AddParameters(IDbCommand command, ...
    class DbCustomParam (line 49) | public class DbCustomParam : SqlMapper.ICustomQueryParameter
      method DbCustomParam (line 53) | public DbCustomParam(IDbDataParameter sqlParameter)
      method AddParameter (line 58) | public void AddParameter(IDbCommand command, string name)
    method CreateSqlDataRecordList (line 64) | private static IEnumerable<IDataRecord> CreateSqlDataRecordList(IDbCom...
    method CreateSqlDataRecordList (line 72) | private static IEnumerable<IDataRecord> CreateSqlDataRecordList(IDbCon...
    method CreateSqlDataRecordList_SD (line 82) | private static List<Microsoft.SqlServer.Server.SqlDataRecord> CreateSq...
    method CreateSqlDataRecordList_MD (line 101) | private static List<Microsoft.Data.SqlClient.Server.SqlDataRecord> Cre...
    class IntDynamicParam (line 120) | private class IntDynamicParam : SqlMapper.IDynamicParameters
      method IntDynamicParam (line 123) | public IntDynamicParam(IEnumerable<int> numbers)
      method AddParameters (line 128) | public void AddParameters(IDbCommand command, SqlMapper.Identity ide...
    class IntCustomParam (line 138) | private class IntCustomParam : SqlMapper.ICustomQueryParameter
      method IntCustomParam (line 141) | public IntCustomParam(IEnumerable<int> numbers)
      method AddParameter (line 146) | public void AddParameter(IDbCommand command, string name)
    method AddStructured (line 157) | private static IDbDataParameter AddStructured(IDbCommand command, obje...
    method TestDoubleParam (line 193) | [Fact]
    method TestBoolParam (line 199) | [Fact]
    method TestTimeSpanParam (line 208) | [Fact]
    method PassInIntArray (line 214) | [Fact]
    method PassInEmptyIntArray (line 223) | [Fact]
    method TestExecuteCommandWithHybridParameters (line 232) | [Fact]
    method GuidIn_SO_24177902 (line 241) | [Fact]
    method TestParameterInclusionNotSensitiveToCurrentCulture (line 269) | [FactUnlessCaseSensitiveDatabase]
    method TestMassiveStrings (line 286) | [Fact]
    method TestTVPWithAnonymousObject (line 294) | [Fact]
    method TestTVPWithAnonymousEmptyObject (line 321) | [Fact]
    method TestTVP (line 353) | [Fact]
    class DynamicParameterWithIntTVP (line 380) | private class DynamicParameterWithIntTVP : DynamicParameters, SqlMappe...
      method DynamicParameterWithIntTVP (line 383) | public DynamicParameterWithIntTVP(IEnumerable<int> numbers)
      method AddParameters (line 388) | public new void AddParameters(IDbCommand command, SqlMapper.Identity...
    method TestTVPWithAdditionalParams (line 401) | [Fact]
    method TestSqlDataRecordListParametersWithAsTableValuedParameter (line 435) | [Fact]
    method TestEmptySqlDataRecordListParametersWithAsTableValuedParameter (line 474) | [Fact]
    method TestSqlDataRecordListParametersWithTypeHandlers (line 501) | [Fact]
    method DataTableParameters (line 554) | [Fact]
    method SO29533765_DataTableParametersViaDynamicParameters (line 585) | [Fact]
    method SO26468710_InWithTVPs (line 607) | [Fact]
    method DataTableParametersWithExtendedProperty (line 628) | [Fact]
    method SupportInit (line 659) | [Fact]
    class WithInit (line 667) | public class WithInit : ISupportInitialize
      method BeginInit (line 672) | void ISupportInitialize.BeginInit() => Flags++;
      method EndInit (line 674) | void ISupportInitialize.EndInit() => Flags += 30;
    method SO29596645_TvpProperty (line 677) | [Fact]
    class SO29596645_RuleTableValuedParameters (line 691) | private class SO29596645_RuleTableValuedParameters : SqlMapper.IDynami...
      method SO29596645_RuleTableValuedParameters (line 695) | public SO29596645_RuleTableValuedParameters(string parameterName)
      method AddParameters (line 700) | public void AddParameters(IDbCommand command, SqlMapper.Identity ide...
    class SO29596645_OrganisationDTO (line 720) | private class SO29596645_OrganisationDTO
      method SO29596645_OrganisationDTO (line 724) | public SO29596645_OrganisationDTO()
    class HazGeo (line 731) | private class HazGeo
    class HazSqlGeo (line 738) | private class HazSqlGeo
    method DBGeography_SO24405645_SO24402424 (line 745) | [Fact]
    method SqlGeography_SO25538154 (line 768) | [Fact]
    method NullableSqlGeometry (line 790) | [Fact]
    method SqlHierarchyId_SO18888911 (line 808) | [Fact]
    class HazSqlHierarchy (line 822) | public class HazSqlHierarchy
    method TestDynamicParameters (line 830) | [Fact]
    method TestDynamicParametersReuse (line 844) | [Fact]
    method TestCustomParameter (line 860) | [Fact]
    method TestCustomParameterReuse (line 874) | [Fact]
    method TestDynamicParamNullSupport (line 890) | [Fact]
    method TestAppendingAnonClasses (line 901) | [Fact]
    method TestAppendingADictionary (line 916) | [Fact]
    method TestAppendingAnExpandoObject (line 934) | [Fact]
    method TestAppendingAList (line 950) | [Fact]
    method TestAppendingAListAsDictionary (line 964) | [Fact]
    method TestAppendingAListByName (line 979) | [Fact]
    method ParameterizedInWithOptimizeHint (line 993) | [Fact]
    method TestProcedureWithTimeParameter (line 1014) | [Fact]
    method TestUniqueIdentifier (line 1029) | [Fact]
    method TestNullableUniqueIdentifierNonNull (line 1037) | [Fact]
    method TestNullableUniqueIdentifierNull (line 1045) | [Fact]
    method TestSupportForDynamicParameters (line 1053) | [Fact]
    method TestSupportForDynamicParametersOutputExpressions (line 1064) | [Fact]
    method TestSupportForDynamicParametersOutputExpressions_Scalar (line 1090) | [Fact]
    method TestSupportForDynamicParametersOutputExpressions_Query_Buffered (line 1121) | [Fact]
    method TestSupportForDynamicParametersOutputExpressions_Query_NonBuffered (line 1152) | [Fact]
    method TestSupportForDynamicParametersOutputExpressions_QueryMultiple (line 1183) | [Fact]
    method TestSupportForExpandoObjectParameters (line 1221) | [Fact]
    method SO25069578_DynamicParams_Procs (line 1231) | [Fact]
    class HazX (line 1247) | public class HazX
    method SO25297173_DynamicIn (line 1252) | [Fact]
    method Test_AddDynamicParametersRepeatedShouldWork (line 1277) | [Fact]
    method Test_AddDynamicParametersRepeatedIfParamTypeIsDbStiringShouldWork (line 1287) | [Fact]
    method AllowIDictionaryParameters (line 1299) | [Fact]
    method TestParameterWithIndexer (line 1310) | [Fact]
    class ParameterWithIndexer (line 1322) | public class ParameterWithIndexer
    method TestMultipleParametersWithIndexer (line 1332) | [Fact]
    class MultipleParametersWithIndexer (line 1341) | public class MultipleParametersWithIndexer : MultipleParametersWithInd...
    class MultipleParametersWithIndexerDeclaringType (line 1346) | public class MultipleParametersWithIndexerDeclaringType
    method Issue182_BindDynamicObjectParametersAndColumns (line 1363) | [Fact]
    class Dyno (line 1379) | public class Dyno
    method Issue151_ExpandoObjectArgsQuery (line 1387) | [Fact]
    method Issue151_ExpandoObjectArgsExec (line 1399) | [Fact]
    method Issue192_InParameterWorksWithSimilarNames (line 1412) | [Fact]
    method Issue192_InParameterWorksWithSimilarNamesWithUnicode (line 1426) | [Fact]
    method Issue220_InParameterCanBeSpecifiedInAnyCase (line 1440) | [FactUnlessCaseSensitiveDatabase]
    method SO30156367_DynamicParamsWithoutExec (line 1450) | [Fact]
    method RunAllStringSplitTestsDisabled (line 1459) | [Fact]
    method RunAllStringSplitTestsEnabled (line 1465) | [FactRequiredCompatibilityLevel(FactRequiredCompatibilityLevelAttribut...
    method RunAllStringSplitTests (line 1471) | private void RunAllStringSplitTests(int stringSplit, int max = 150)
    method Incr (line 1504) | private static void Incr(ref int i)
    method Issue601_InternationalParameterNamesWork (line 1513) | [Fact]
    method TestListExpansionPadding_Enabled (line 1521) | [FactLongRunning]
    method TestListExpansionPadding_Disabled (line 1524) | [FactLongRunning]
    method OleDbParamFilterFails (line 1527) | [Theory]
    method TestListExpansionPadding (line 1557) | private void TestListExpansionPadding(bool enabled)
    method TestListForExpansion (line 1605) | private void TestListForExpansion(List<int> list, bool enabled)
    method GetExpectedListExpansionCount (line 1624) | private static int GetExpectedListExpansionCount(int count, bool enabled)
    method Issue1907_SqlDecimalPreciseValues (line 1642) | [Fact]
    class HazSqlDecimal (line 1743) | class HazSqlDecimal
    class HazNullableSqlDecimal (line 1749) | class HazNullableSqlDecimal
    class TypeWithDodgyProperties (line 1755) | class TypeWithDodgyProperties

FILE: tests/Dapper.Tests/ProcedureTests.cs
  class SystemSqlClientProcedureTests (line 9) | [Collection("ProcedureTests")]
  class MicrosoftSqlClientProcedureTests (line 12) | [Collection("ProcedureTests")]
  class ProcedureTests (line 15) | public abstract class ProcedureTests<TProvider> : TestBase<TProvider> wh...
    method TestProcWithOutParameter (line 17) | [Fact]
    method TestProcWithOutAndReturnParameter (line 39) | [Fact]
    method TestIssue17648290 (line 64) | [Fact]
    method InferProcedure (line 95) | [Theory]
    method InferNotProcedure (line 105) | [Theory]
    method SO24605346_ProcsAndStrings (line 115) | [Fact]
    class PracticeRebateOrders (line 133) | private class PracticeRebateOrders
    method Issue327_ReadEmptyProcedureResults (line 144) | [Fact]
    class Issue327_Person (line 160) | private class Issue327_Person
    class Issue327_Magic (line 166) | private class Issue327_Magic
    method TestProcSupport (line 173) | [Fact]
    method TestListOfAnsiStrings (line 198) | [Fact]
    method TestDateTime2PrecisionPreservedInDynamicParameters (line 216) | [Fact]
    method TestDateTime2LosePrecisionInDynamicParameters (line 248) | [Theory]
    method Issue591_NoResultsAsync (line 285) | [Fact]
    method Issue1986_AutoProc_Whitespace (line 306) | [Theory]
    method InferCommandType (line 321) | [Theory]

FILE: tests/Dapper.Tests/ProviderTests.cs
  class ProviderTests (line 8) | public class ProviderTests
    method BulkCopy_SystemDataSqlClient (line 10) | [Fact]
    method BulkCopy_MicrosoftDataSqlClient (line 19) | [Fact]
    method ClientId_SystemDataSqlClient (line 26) | [Fact]
    method ClearPool_SystemDataSqlClient (line 30) | [Fact]
    method ClearAllPools_SystemDataSqlClient (line 34) | [Fact]
    method ClientId_MicrosoftDataSqlClient (line 39) | [Fact]
    method ClearPool_MicrosoftDataSqlClient (line 43) | [Fact]
    method ClearAllPools_MicrosoftDataSqlClient (line 47) | [Fact]
    method TestClientId (line 52) | private static void TestClientId<T>()
    method ClearPool (line 61) | private static void ClearPool<T>()
    method ClearAllPools (line 69) | private static void ClearAllPools<T>()
    method Test (line 77) | private static void Test<T>(DbConnection connection)
    method DbNumber_SystemData (line 85) | [Theory]
    method DbNumber_MicrosoftData (line 92) | [Theory]
    method Test (line 99) | private static void Test<T>(int create, int test, bool result)

FILE: tests/Dapper.Tests/Providers/DuckDBTests.cs
  class DuckDBProvider (line 8) | public class DuckDBProvider : DatabaseProvider
    method GetConnectionString (line 11) | public override string GetConnectionString() => "Data Source=:memory:";
  class DuckDBTypeTestBase (line 14) | public abstract class DuckDBTypeTestBase : TestBase<DuckDBProvider>
    method GetDuckDBConnection (line 16) | protected DuckDBConnection GetDuckDBConnection(bool open = true)
    class FactDuckDBAttribute (line 19) | [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
      method FactDuckDBAttribute (line 30) | static FactDuckDBAttribute()
  class DuckDBTests (line 44) | public class DuckDBTests : DuckDBTypeTestBase
    method DuckDBNamedParameter (line 46) | [FactDuckDB]
    method DuckDBPositionalParameter (line 55) | [FactDuckDB]

FILE: tests/Dapper.Tests/Providers/EntityFrameworkTests.cs
  class SystemSqlClientEntityFrameworkTests (line 9) | public sealed class SystemSqlClientEntityFrameworkTests : EntityFramewor...
  class MicrosoftSqlClientEntityFrameworkTests (line 11) | public sealed class MicrosoftSqlClientEntityFrameworkTests : EntityFrame...
  class EntityFrameworkTests (line 14) | [Collection("TypeHandlerTests")]
    method EntityFrameworkTests (line 17) | public EntityFrameworkTests()
    method Issue570_DbGeo_HasValues (line 22) | [Fact]
    method Issue22_ExecuteScalar_EntityFramework (line 39) | [Fact]
    method TestGeometryParsingRetainsSrid (line 49) | [Fact]
    method TestGeographyParsingRetainsSrid (line 60) | [Fact]

FILE: tests/Dapper.Tests/Providers/FirebirdTests.cs
  class FirebirdProvider (line 15) | public class FirebirdProvider : DatabaseProvider
    method GetConnectionString (line 18) | public override string GetConnectionString() => "initial catalog=local...
  class FirebirdTests (line 20) | public class FirebirdTests : TestBase<FirebirdProvider>
    method GetOpenFirebirdConnection (line 22) | private FbConnection GetOpenFirebirdConnection() => (FbConnection)Prov...
    method Issue178_Firebird (line 24) | [Fact(Skip = "Bug in Firebird; a PR to fix it has been submitted")]

FILE: tests/Dapper.Tests/Providers/Linq2SqlTests.cs
  class SystemSqlClientLinq2SqlTests (line 11) | public sealed class SystemSqlClientLinq2SqlTests : Linq2SqlTests<SystemS...
  class MicrosoftSqlClientLinq2SqlTests (line 13) | public sealed class MicrosoftSqlClientLinq2SqlTests : Linq2SqlTests<Micr...
  class Linq2SqlTests (line 15) | public abstract class Linq2SqlTests<TProvider> : TestBase<TProvider> whe...
    method TestLinqBinaryToClass (line 17) | [Fact]
    method TestLinqBinaryRaw (line 29) | [Fact]
    class WithBinary (line 41) | private class WithBinary
    class NoDefaultConstructorWithBinary (line 46) | private class NoDefaultConstructorWithBinary
      method NoDefaultConstructorWithBinary (line 50) | public NoDefaultConstructorWithBinary(System.Data.Linq.Binary val)
    method TestNoDefaultConstructorBinary (line 56) | [Fact]

FILE: tests/Dapper.Tests/Providers/MySQLTests.cs
  class MySqlProvider (line 16) | public sealed class MySqlProvider : DatabaseProvider
    method GetConnectionString (line 19) | public override string GetConnectionString() =>
    method GetMySqlConnection (line 22) | public DbConnection GetMySqlConnection(bool open = true,
  class MySQLTests (line 36) | public class MySQLTests : TestBase<MySqlProvider>
    method DapperEnumValue_Mysql (line 38) | [FactMySql]
    method Issue552_SignedUnsignedBooleans (line 45) | [FactMySql]
    class MySqlHasBool (line 79) | private class MySqlHasBool
    method Issue295_NullableDateTime_MySql_Default (line 85) | [FactMySql]
    method Issue295_NullableDateTime_MySql_ConvertZeroDatetime (line 92) | [FactMySql]
    method Issue295_NullableDateTime_MySql_AllowZeroDatetime (line 99) | [FactMySql(Skip = "See https://github.com/DapperLib/Dapper/issues/295,...
    method Issue295_NullableDateTime_MySql_ConvertAllowZeroDatetime (line 108) | [FactMySql(Skip = "See https://github.com/DapperLib/Dapper/issues/295,...
    method Issue426_SO34439033_DateTimeGainsTicks (line 115) | [FactMySql]
    method SO36303462_Tinyint_Bools (line 137) | [FactMySql]
    method Issue1277_ReaderSync (line 155) | [FactMySql]
    method Issue1277_ReaderAsync (line 177) | [FactMySql]
    class SO36303462 (line 199) | private class SO36303462
    class Issue426_Test (line 205) | public class Issue426_Test
    class FactMySqlAttribute (line 211) | [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
      method FactMySqlAttribute (line 222) | static FactMySqlAttribute()

FILE: tests/Dapper.Tests/Providers/OLDEBTests.cs
  class OLEDBProvider (line 10) | public class OLEDBProvider : DatabaseProvider
    method GetConnectionString (line 13) | public override string GetConnectionString() =>
  class OLDEBTests (line 17) | public class OLDEBTests : TestBase<OLEDBProvider>
    method GetOleDbConnection (line 19) | public OleDbConnection GetOleDbConnection() => (OleDbConnection) Provi...
    method TestOleDbParameters (line 22) | [Fact]
    method PseudoPositionalParameters_Simple (line 36) | [Fact]
    method Issue601_InternationalParameterNamesWork_OleDb (line 44) | [Fact]
    method PseudoPositionalParameters_Dynamic (line 52) | [Fact]
    method PseudoPositionalParameters_ReusedParameter (line 65) | [Fact]
    method Issue569_SO38527197_PseudoPositionalParameters_In_And_Other_Condition (line 73) | [Fact]
    method Issue569_SO38527197_PseudoPositionalParameters_In (line 88) | [Fact]
    method PseudoPositional_CanUseVariable (line 98) | [Fact]
    method PseudoPositional_CannotUseParameterMultipleTimes (line 110) | [Fact]
    method PseudoPositionalParameters_ExecSingle (line 122) | [Fact]
    method PseudoPositionalParameters_ExecMulti (line 135) | [Fact]
    method Issue457_NullParameterValues (line 153) | [Fact]
    method Issue457_NullParameterValues_Named (line 179) | [Fact]
    method Issue457_NullParameterValues_MultiAsync (line 205) | [Fact]
    method Issue457_NullParameterValues_MultiAsync_Named (line 234) | [Fact]

FILE: tests/Dapper.Tests/Providers/PostgresqlTests.cs
  class PostgresProvider (line 16) | public class PostgresProvider : DatabaseProvider
    method GetConnectionString (line 19) | public override string GetConnectionString() =>
  class PostgresqlTests (line 22) | public class PostgresqlTests : TestBase<PostgresProvider>
    method GetOpenNpgsqlConnection (line 24) | private Npgsql.NpgsqlConnection GetOpenNpgsqlConnection() => (Npgsql.N...
    class Cat (line 26) | private class Cat
    method TestPostgresqlArrayParameters (line 47) | [FactPostgresql]
    method TestPostgresqlListParameters (line 64) | [FactPostgresql]
    class CharTable (line 81) | private class CharTable
    method TestPostgresqlChar (line 87) | [FactPostgresql]
    method TestPostgresqlSelectArray (line 102) | [FactPostgresql]
    method TestPostgresqlDateTimeUsage (line 112) | [FactPostgresql]
    class FactPostgresqlAttribute (line 122) | [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
      method FactPostgresqlAttribute (line 133) | static FactPostgresqlAttribute()

FILE: tests/Dapper.Tests/Providers/SnowflakeTests.cs
  class SnowflakeTests (line 11) | public class SnowflakeTests
    method SnowflakeTests (line 14) | static SnowflakeTests()
    method SnowflakeTests (line 24) | public SnowflakeTests(ITestOutputHelper output)
    method GetConnection (line 30) | private static SnowflakeDbConnection GetConnection()
    method Connect (line 41) | [Fact]
    method BasicQuery (line 49) | [Fact]
    method ParameterizedQuery (line 63) | [Fact]
    class Nation (line 77) | public class Nation

FILE: tests/Dapper.Tests/Providers/SqliteTests.cs
  class SqliteProvider (line 11) | public class SqliteProvider : DatabaseProvider
    method GetConnectionString (line 14) | public override string GetConnectionString() => "Data Source=:memory:";
  class SqliteTypeTestBase (line 17) | public abstract class SqliteTypeTestBase : TestBase<SqliteProvider>
    method GetSQLiteConnection (line 19) | protected SqliteConnection GetSQLiteConnection(bool open = true)
    class FactSqliteAttribute (line 22) | [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
      method FactSqliteAttribute (line 33) | static FactSqliteAttribute()
  class SqliteTypeHandlerTests (line 47) | [Collection(NonParallelDefinition.Name)]
    method Issue466_SqliteHatesOptimizations (line 50) | [FactSqlite]
    method Issue466_SqliteHatesOptimizations_Async (line 68) | [FactSqlite]
  class SqliteTests (line 87) | public class SqliteTests : SqliteTypeTestBase
    method DapperEnumValue_Sqlite (line 89) | [FactSqlite]
    method Isse467_SqliteLikesParametersWithPrefix (line 98) | [FactSqlite]
    method Isse467_SqliteLikesParametersWithoutPrefix (line 104) | [FactSqlite]
    method Isse467_SqliteParameterNaming (line 110) | private void Isse467_SqliteParameterNaming(bool prefix)
    method DateTimeIsParsedWithInvariantCulture (line 122) | [FactSqlite]
    class PersonWithDob (line 156) | private class PersonWithDob

FILE: tests/Dapper.Tests/QueryMultipleTests.cs
  class SystemSqlClientQueryMultipleTests (line 9) | [Collection("QueryMultipleTests")]
  class MicrosoftSqlClientQueryMultipleTests (line 12) | [Collection("QueryMultipleTests")]
  class QueryMultipleTests (line 15) | public abstract class QueryMultipleTests<TProvider> : TestBase<TProvider...
    method TestQueryMultipleBuffered (line 17) | [Fact]
    method TestMultiConversion (line 33) | [Fact]
    method TestQueryMultipleNonBufferedIncorrectOrder (line 41) | [Fact]
    method TestQueryMultipleNonBufferedCorrectOrder (line 58) | [Fact]
    method TestMultiReaderBasic (line 74) | [Fact]
    method TestReadDynamicWithGridReader (line 91) | [Fact]
    method Issue268_ReturnQueryMultiple (line 128) | [Fact]
    method Issue524_QueryMultiple_Cast (line 150) | [Fact]
    method QueryMultipleFromClosed (line 165) | [Fact]
    method QueryMultiple2FromClosed (line 177) | [Fact]
    method SO35554284_QueryMultipleUntilConsumed (line 193) | [Fact]
    method QueryMultipleInvalidFromClosed (line 209) | [Fact]
    method TestMultiSelectWithSomeEmptyGridsUnbuffered (line 217) | [Fact]
    method TestMultiSelectWithSomeEmptyGridsBuffered (line 220) | [Fact]
    method TestMultiSelectWithSomeEmptyGrids (line 223) | private void TestMultiSelectWithSomeEmptyGrids(bool buffered)
    method TypeBasedViaTypeMulti (line 249) | [Fact]

FILE: tests/Dapper.Tests/SharedTypes/Address.cs
  class Address (line 3) | public class Address

FILE: tests/Dapper.Tests/SharedTypes/Bar1.cs
  class Bar1 (line 3) | public class Bar1

FILE: tests/Dapper.Tests/SharedTypes/Category.cs
  class Category (line 3) | public class Category

FILE: tests/Dapper.Tests/SharedTypes/Comment.cs
  class Comment (line 3) | public class Comment

FILE: tests/Dapper.Tests/SharedTypes/Dog.cs
  class Dog (line 5) | public class Dog

FILE: tests/Dapper.Tests/SharedTypes/Enums.cs
  type AnEnum (line 3) | internal enum AnEnum
  type AnotherEnum (line 9) | internal enum AnotherEnum : byte

FILE: tests/Dapper.Tests/SharedTypes/Foo1.cs
  class Foo1 (line 3) | public class Foo1

FILE: tests/Dapper.Tests/SharedTypes/HazNameId.cs
  class HazNameId (line 3) | public class HazNameId

FILE: tests/Dapper.Tests/SharedTypes/Index.cs
  class Index (line 3) | public class Index

FILE: tests/Dapper.Tests/SharedTypes/Person.cs
  class Person (line 3) | public class Person

FILE: tests/Dapper.Tests/SharedTypes/Post.cs
  class Post (line 3) | public class Post

FILE: tests/Dapper.Tests/SharedTypes/Product.cs
  class Product (line 3) | public class Product

FILE: tests/Dapper.Tests/SharedTypes/ReviewBoard.cs
  class ReviewBoard (line 3) | public class ReviewBoard

FILE: tests/Dapper.Tests/SharedTypes/ShortEnum.cs
  type ShortEnum (line 3) | public enum ShortEnum : short

FILE: tests/Dapper.Tests/SharedTypes/SomeType.cs
  class SomeType (line 3) | public class SomeType

FILE: tests/Dapper.Tests/SharedTypes/User.cs
  class User (line 3) | public class User

FILE: tests/Dapper.Tests/SingleRowTests.cs
  class SystemSqlClientSingleRowTests (line 16) | [Collection("SingleRowTests")]
    method InjectDataAsync (line 19) | protected override async Task InjectDataAsync(DbConnection conn, DbDat...
  class MicrosoftSqlClientSingleRowTests (line 30) | [Collection("SingleRowTests")]
    method InjectDataAsync (line 33) | protected override async Task InjectDataAsync(DbConnection conn, DbDat...
  class SingleRowTests (line 42) | public abstract class SingleRowTests<TProvider>(ITestOutputHelper log) :...
    method InjectDataAsync (line 44) | protected abstract Task InjectDataAsync(DbConnection connection, DbDat...
    method QueryFirst_PerformanceAndCorrectness (line 46) | [Fact]
    class MyRow (line 131) | public class MyRow
  class AsyncLinqHelper (line 138) | internal static class AsyncLinqHelper
    method FirstAsync (line 140) | public static async ValueTask<T> FirstAsync<T>(this IAsyncEnumerable<T...

FILE: tests/Dapper.Tests/SqlBuilderTests.cs
  class SystemSqlClientSqlBuilderTests (line 7) | [Collection("SqlBuilderTests")]
  class MicrosoftSqlClientSqlBuilderTests (line 10) | [Collection("SqlBuilderTests")]
  class SqlBuilderTests (line 13) | public abstract class SqlBuilderTests<TProvider> : TestBase<TProvider> w...
    method TestSqlBuilderWithDapperQuery (line 15) | [Fact]
    method TestSqlBuilderUpdateSet (line 47) | [Fact]

FILE: tests/Dapper.Tests/TestBase.cs
  class DatabaseProvider (line 10) | public static class DatabaseProvider<TProvider> where TProvider : Databa...
    method Dispose (line 18) | public virtual void Dispose() { }
    method GetConnectionString (line 19) | public abstract string GetConnectionString();
    method GetConnectionString (line 21) | protected static string GetConnectionString(string name, string defaul...
    method GetOpenConnection (line 24) | public DbConnection GetOpenConnection()
    method GetClosedConnection (line 33) | public DbConnection GetClosedConnection()
    method CreateRawParameter (line 41) | public DbParameter CreateRawParameter(string name, object value)
  class DatabaseProvider (line 14) | public abstract class DatabaseProvider
    method Dispose (line 18) | public virtual void Dispose() { }
    method GetConnectionString (line 19) | public abstract string GetConnectionString();
    method GetConnectionString (line 21) | protected static string GetConnectionString(string name, string defaul...
    method GetOpenConnection (line 24) | public DbConnection GetOpenConnection()
    method GetClosedConnection (line 33) | public DbConnection GetClosedConnection()
    method CreateRawParameter (line 41) | public DbParameter CreateRawParameter(string name, object value)
  class SqlServerDatabaseProvider (line 50) | public abstract class SqlServerDatabaseProvider : DatabaseProvider
    method GetConnectionString (line 52) | public override string GetConnectionString() => GetConnectionString(fa...
    method GetConnectionString (line 54) | private string GetConnectionString(bool mars)
    method GetOpenConnection (line 66) | public DbConnection GetOpenConnection(bool mars)
  class SystemSqlClientProvider (line 75) | public sealed class SystemSqlClientProvider : SqlServerDatabaseProvider
  class MicrosoftSqlClientProvider (line 82) | public sealed class MicrosoftSqlClientProvider : SqlServerDatabaseProvider
  class TestBase (line 88) | public abstract class TestBase<TProvider> : IDisposable where TProvider ...
    method SkipIfMsDataClient (line 90) | protected void SkipIfMsDataClient()
    method GetOpenConnection (line 93) | protected DbConnection GetOpenConnection() => Provider.GetOpenConnecti...
    method GetClosedConnection (line 94) | protected DbConnection GetClosedConnection() => Provider.GetClosedConn...
    method TestBase (line 106) | static TestBase()
    method Dispose (line 127) | public virtual void Dispose()
  class NonParallelDefinition (line 135) | public static class NonParallelDefinition

FILE: tests/Dapper.Tests/TransactionTests.cs
  class SystemSqlClientTransactionTests (line 10) | [Collection("TransactionTests")]
  class MicrosoftSqlClientTransactionTests (line 13) | [Collection("TransactionTests")]
  class TransactionTests (line 16) | public abstract class TransactionTests<TProvider> : TestBase<TProvider> ...
    method TestTransactionCommit (line 18) | [Fact]
    method TestTransactionRollback (line 40) | [Fact]
    method TestCommandWithInheritedTransaction (line 62) | [Fact]

FILE: tests/Dapper.Tests/TupleTests.cs
  class SystemSqlClientTupleTests (line 6) | [Collection("TupleTests")]
  class MicrosoftSqlClientTupleTests (line 9) | [Collection("TupleTests")]
  class TupleTests (line 12) | public abstract class TupleTests<TProvider> : TestBase<TProvider> where ...
    method TupleStructParameter_Fails_HelpfulMessage (line 14) | [Fact]
    method TupleClassParameter_Works (line 21) | [Fact]
    method TupleReturnValue_Works_ByPosition (line 27) | [Fact]
    method TupleReturnValue_TooManyColumns_Ignored (line 35) | [Fact]
    method TupleReturnValue_NullableTuple_Works (line 43) | [Fact]
    method TupleReturnValue_NullableTuple_Works_When_Null (line 52) | [Fact]
    method TupleReturnValue_TooFewColumns_Unmapped (line 59) | [Fact]
    method TupleReturnValue_Works_NamesIgnored (line 69) | [Fact]
    method TupleReturnValue_Works_With8Elements (line 77) | [Fact]
    method Nullable_TupleReturnValue_Works_With8Elements (line 95) | [Fact]
    method Nullable_TupleReturnValue_Works_With8Elements_When_Null (line 114) | [Fact]
    method TupleReturnValue_Works_With15Elements (line 125) | [Fact]
    method Nullable_TupleReturnValue_Works_With15Elements (line 151) | [Fact]
    method Nullable_TupleReturnValue_Works_With15Elements_When_Null (line 177) | [Fact]
    method TupleReturnValue_Works_WithStringField (line 188) | [Fact]
    method TupleReturnValue_Works_WithByteField (line 195) | [Fact]

FILE: tests/Dapper.Tests/TypeHandlerTests.cs
  class SystemSqlClientTypeHandlerTests (line 11) | [Collection(NonParallelDefinition.Name)]
  class MicrosoftSqlClientTypeHandlerTests (line 14) | [Collection(NonParallelDefinition.Name)]
  class TypeHandlerTests (line 18) | public abstract class TypeHandlerTests<TProvider> : TestBase<TProvider> ...
    method TestChangingDefaultStringTypeMappingToAnsiString (line 20) | [Fact]
    method TestChangingDefaultStringTypeMappingToAnsiStringFirstOrDefault (line 45) | [Fact]
    method TestCustomTypeMap (line 69) | [Fact]
    method GetDescriptionFromAttribute (line 93) | private static string? GetDescriptionFromAttribute(MemberInfo member)
    class TypeWithMapping (line 100) | public class TypeWithMapping
    method Issue136_ValueTypeHandlers (line 109) | [Fact]
    class LocalDateHandler (line 128) | public class LocalDateHandler : SqlMapper.TypeHandler<LocalDate>
      method LocalDateHandler (line 130) | private LocalDateHandler() { /* private constructor */ }
      method Parse (line 136) | public override LocalDate Parse(object? value)
      method SetValue (line 142) | public override void SetValue(IDbDataParameter parameter, LocalDate ...
    type LocalDate (line 149) | public struct LocalDate
    class LocalDateResult (line 156) | public class LocalDateResult
    class LotsOfNumerics (line 163) | public class LotsOfNumerics
      type E_Byte (line 165) | public enum E_Byte : byte { A = 0, B = 1 }
      type E_SByte (line 166) | public enum E_SByte : sbyte { A = 0, B = 1 }
      type E_Short (line 167) | public enum E_Short : short { A = 0, B = 1 }
      type E_UShort (line 168) | public enum E_UShort : ushort { A = 0, B = 1 }
      type E_Int (line 169) | public enum E_Int : int { A = 0, B = 1 }
      type E_UInt (line 170) | public enum E_UInt : uint { A = 0, B = 1 }
      type E_Long (line 171) | public enum E_Long : long { A = 0, B = 1 }
      type E_ULong (line 172) | public enum E_ULong : ulong { A = 0, B = 1 }
    method TestBigIntForEverythingWorks (line 221) | [Fact]
    method TestBigIntForEverythingWorks_ByDataType (line 233) | private void TestBigIntForEverythingWorks_ByDataType<T>(string dbType)
    method TestBigIntForEverythingWorksGeneric (line 336) | private void TestBigIntForEverythingWorksGeneric<T>(T expected, string...
    method TestSubsequentQueriesSuccess (line 345) | [Fact]
    class Fooz0 (line 367) | private class Fooz0
    class Fooz1 (line 372) | private class Fooz1
    class Fooz2 (line 377) | private class Fooz2
    class RatingValueHandler (line 382) | public class RatingValueHandler : SqlMapper.TypeHandler<RatingValue>
      method RatingValueHandler (line 384) | private RatingValueHandler()
      method Parse (line 390) | public override RatingValue Parse(object? value)
      method SetValue (line 400) | public override void SetValue(IDbDataParameter parameter, RatingValu...
    class RatingValue (line 408) | public class RatingValue
    class MyResult (line 414) | public class MyResult
    method SO24740733_TestCustomValueHandler (line 420) | [Fact]
    method SO24740733_TestCustomValueSingleColumn (line 430) | [Fact]
    class StringListTypeHandler (line 439) | public class StringListTypeHandler : SqlMapper.TypeHandler<List<string>>
      method StringListTypeHandler (line 441) | private StringListTypeHandler()
      method SetValue (line 447) | public override void SetValue(IDbDataParameter parameter, List<strin...
      method Parse (line 452) | public override List<string> Parse(object? value)
    class MyObjectWithStringList (line 458) | public class MyObjectWithStringList
    method Issue253_TestIEnumerableTypeHandlerParsing (line 463) | [Fact]
    method Issue253_TestIEnumerableTypeHandlerSetParameterValue (line 472) | [Fact]
    class RecordingTypeHandler (line 492) | public class RecordingTypeHandler<T> : SqlMapper.TypeHandler<T>
      method SetValue (line 494) | public override void SetValue(IDbDataParameter parameter, T? value)
      method Parse (line 500) | public override T Parse(object? value)
    method Test_RemoveTypeMap (line 510) | [Fact]
    method TestReaderWhenResultsChange (line 536) | [Fact]
    class ResultsChangeType (line 572) | private class ResultsChangeType
    class WrongTypes (line 579) | public class WrongTypes
    method TestWrongTypes_WithRightTypes (line 587) | [Fact]
    method TestWrongTypes_WithWrongTypes (line 597) | [Fact]
    method TestTreatIntAsABool (line 607) | [Fact]
    method SO24607639_NullableBools (line 614) | [Fact]
    class HazBools (line 629) | private class HazBools
    method Issue130_IConvertible (line 636) | [Fact]
    method Issue149_TypeMismatch_SequentialAccess (line 652) | [Fact]
    class Issue149_Person (line 660) | public class Issue149_Person { public string? Id { get; set; } }
    method Issue295_NullableDateTime_SqlServer (line 662) | [Fact]
    method SO29343103_UtcDates (line 665) | [Fact]
    method Issue461_TypeHandlerWorksInConstructor (line 675) | [Fact]
    class Blarg (line 707) | private class Blarg
      method Blarg (line 709) | public Blarg(string? value) { Value = value; }
      method ToString (line 711) | public override string ToString()
    class Issue461_BlargHandler (line 717) | private class Issue461_BlargHandler : SqlMapper.TypeHandler<Blarg>
      method SetValue (line 719) | public override void SetValue(IDbDataParameter parameter, Blarg? value)
      method Parse (line 724) | public override Blarg? Parse(object? value)
    class Issue461_ParameterlessTypeConstructor (line 731) | private class Issue461_ParameterlessTypeConstructor
    class Issue461_ParameterisedTypeConstructor (line 739) | private class Issue461_ParameterisedTypeConstructor
      method Issue461_ParameterisedTypeConstructor (line 741) | public Issue461_ParameterisedTypeConstructor(int id, string someValu...
    method Issue1959_TypeHandlerNullability_Subclass (line 754) | [Theory]
    method Issue1959_TypeHandlerNullability_Raw (line 774) | [Theory]
    class HazIssue1959_Subclass (line 794) | public class HazIssue1959_Subclass
    class HazIssue1959_Raw (line 801) | public class HazIssue1959_Raw
    class Issue1959_Subclass_Handler (line 808) | public class Issue1959_Subclass_Handler : SqlMapper.TypeHandler<Issue1...
      method Register (line 810) | public static void Register() => SqlMapper.AddTypeHandler<Issue1959_...
      method Issue1959_Subclass_Handler (line 811) | private Issue1959_Subclass_Handler() { }
      method Parse (line 814) | public override Issue1959_Subclass Parse(object value)
      method SetValue (line 820) | public override void SetValue(IDbDataParameter parameter, TypeHandle...
    class Issue1959_Raw_Handler (line 824) | public class Issue1959_Raw_Handler : SqlMapper.ITypeHandler
      method Register (line 826) | public static void Register() => SqlMapper.AddTypeHandler(typeof(Iss...
      method Issue1959_Raw_Handler (line 827) | private Issue1959_Raw_Handler() { }
      method SetValue (line 830) | void SqlMapper.ITypeHandler.SetValue(IDbDataParameter parameter, obj...
      method Parse (line 843) | object? SqlMapper.ITypeHandler.Parse(Type destinationType, object va...
    type Issue1959_Subclass (line 852) | public readonly struct Issue1959_Subclass : IEquatable<Issue1959_Subcl...
      method Issue1959_Subclass (line 855) | public Issue1959_Subclass(DateTime value) => Value = value;
      method GetHashCode (line 857) | public override int GetHashCode() => Value.GetHashCode();
      method Equals (line 858) | public override bool Equals(object? obj)
      method Equals (line 860) | public bool Equals(Issue1959_Subclass other)
      method ToString (line 862) | public override string ToString() => Value.ToString();
    type Issue1959_Raw (line 866) | public readonly struct Issue1959_Raw : IEquatable<Issue1959_Raw>
      method Issue1959_Raw (line 869) | public Issue1959_Raw(DateTime value) => Value = value;
      method GetHashCode (line 871) | public override int GetHashCode() => Value.GetHashCode();
      method Equals (line 872) | public override bool Equals(object? obj)
      method Equals (line 874) | public bool Equals(Issue1959_Raw other)
      method ToString (line 876) | public override string ToString() => Value.ToString();

FILE: tests/Dapper.Tests/WrappedReaderTests.cs
  class WrappedReaderTests (line 9) | public class WrappedReaderTests(ITestOutputHelper testOutputHelper)
    method DbWrappedReader_Dispose_DoesNotThrow (line 11) | [Fact]
    method DbWrappedReader_DisposeAsync_DoesNotThrow (line 19) | [Fact]
    method WrappedBasicReader_Dispose_DoesNotThrow (line 27) | [Fact]
    method WrappedBasicReader_DisposeAsync_DoesNotThrow (line 35) | [Fact]
    class DummyDbCommand (line 43) | private class DummyDbCommand : DbCommand
      method Cancel (line 45) | public override void Cancel() => throw new NotSupportedException();
      method ExecuteNonQuery (line 46) | public override int ExecuteNonQuery() => throw new NotSupportedExcep...
      method ExecuteScalar (line 47) | public override object ExecuteScalar() => throw new NotSupportedExce...
      method Prepare (line 48) | public override void Prepare() => throw new NotSupportedException();
      method CreateDbParameter (line 60) | protected override DbParameter CreateDbParameter() => throw new NotS...
      method ExecuteDbDataReader (line 61) | protected override DbDataReader ExecuteDbDataReader(CommandBehavior ...
    class ThrowOnCloseDbDataReader (line 64) | private class DummyDbException(string message) : DbException(message);
      method Dispose (line 69) | protected override void Dispose(bool disposing)
      method Close (line 85) | public override void Close() => throw new DummyDbException("Exceptio...
      method GetBoolean (line 87) | public override bool GetBoolean(int ordinal) => throw new NotSupport...
      method GetByte (line 88) | public override byte GetByte(int ordinal) => throw new NotSupportedE...
      method GetBytes (line 89) | public override long GetBytes(int ordinal, long dataOffset, byte[]? ...
      method GetChar (line 90) | public override char GetChar(int ordinal) => throw new NotSupportedE...
      method GetChars (line 91) | public override long GetChars(int ordinal, long dataOffset, char[]? ...
      method GetDataTypeName (line 92) | public override string GetDataTypeName(int ordinal) => throw new Not...
      method GetDateTime (line 93) | public override DateTime GetDateTime(int ordinal) => throw new NotSu...
      method GetDecimal (line 94) | public override decimal GetDecimal(int ordinal) => throw new NotSupp...
      method GetDouble (line 95) | public override double GetDouble(int ordinal) => throw new NotSuppor...
      method GetFieldType (line 96) | public override Type GetFieldType(int ordinal) => throw new NotSuppo...
      method GetFloat (line 97) | public override float GetFloat(int ordinal) => throw new NotSupporte...
      method GetGuid (line 98) | public override Guid GetGuid(int ordinal) => throw new NotSupportedE...
      method GetInt16 (line 99) | public override short GetInt16(int ordinal) => throw new NotSupporte...
      method GetInt32 (line 100) | public override int GetInt32(int ordinal) => throw new NotSupportedE...
      method GetInt64 (line 101) | public override long GetInt64(int ordinal) => throw new NotSupported...
      method GetName (line 102) | public override string GetName(int ordinal) => throw new NotSupporte...
      method GetOrdinal (line 103) | public override int GetOrdinal(string name) => throw new NotSupporte...
      method GetString (line 104) | public override string GetString(int ordinal) => throw new NotSuppor...
      method GetValue (line 105) | public override object GetValue(int ordinal) => throw new NotSupport...
      method GetValues (line 106) | public override int GetValues(object[] values) => throw new NotSuppo...
      method IsDBNull (line 107) | public override bool IsDBNull(int ordinal) => throw new NotSupported...
      method NextResult (line 114) | public override bool NextResult() => throw new NotSupportedException();
      method Read (line 115) | public override bool Read() => throw new NotSupportedException();
      method GetEnumerator (line 117) | public override IEnumerator GetEnumerator() => throw new NotSupporte...
    class ThrowOnCloseIDataReader (line 120) | private class ThrowOnCloseIDataReader : IDataReader
      method Dispose (line 122) | public void Dispose()
      method Close (line 127) | public void Close() => throw new DummyDbException("Exception during ...
      method GetBoolean (line 129) | public bool GetBoolean(int i) => throw new NotSupportedException();
      method GetByte (line 130) | public byte GetByte(int i) => throw new NotSupportedException();
      method GetBytes (line 131) | public long GetBytes(int i, long fieldOffset, byte[]? buffer, int bu...
      method GetChar (line 132) | public char GetChar(int i) => throw new NotSupportedException();
      method GetChars (line 133) | public long GetChars(int i, long fieldoffset, char[]? buffer, int bu...
      method GetData (line 134) | public IDataReader GetData(int i) => throw new NotSupportedException();
      method GetDataTypeName (line 135) | public string GetDataTypeName(int i) => throw new NotSupportedExcept...
      method GetDateTime (line 136) | public DateTime GetDateTime(int i) => throw new NotSupportedExceptio...
      method GetDecimal (line 137) | public decimal GetDecimal(int i) => throw new NotSupportedException();
      method GetDouble (line 138) | public double GetDouble(int i) => throw new NotSupportedException();
      method GetFieldType (line 139) | public Type GetFieldType(int i) => throw new NotSupportedException();
      method GetFloat (line 140) | public float GetFloat(int i) => throw new NotSupportedException();
      method GetGuid (line 141) | public Guid GetGuid(int i) => throw new NotSupportedException();
      method GetInt16 (line 142) | public short GetInt16(int i) => throw new NotSupportedException();
      method GetInt32 (line 143) | public int GetInt32(int i) => throw new NotSupportedException();
      method GetInt64 (line 144) | public long GetInt64(int i) => throw new NotSupportedException();
      method GetName (line 145) | public string GetName(int i) => throw new NotSupportedException();
      method GetOrdinal (line 146) | public int GetOrdinal(string name) => throw new NotSupportedExceptio...
      method GetString (line 147) | public string GetString(int i) => throw new NotSupportedException();
      method GetValue (line 148) | public object GetValue(int i) => throw new NotSupportedException();
      method GetValues (line 149) | public int GetValues(object[] values) => throw new NotSupportedExcep...
      method IsDBNull (line 150) | public bool IsDBNull(int i) => throw new NotSupportedException();
      method GetSchemaTable (line 154) | public DataTable? GetSchemaTable() => throw new NotSupportedExceptio...
      method NextResult (line 155) | public bool NextResult() => throw new NotSupportedException();
      method Read (line 156) | public bool Read() => throw new NotSupportedException();

FILE: tests/Dapper.Tests/XmlTests.cs
  class SystemSqlClientXmlTests (line 7) | [Collection("XmlTests")]
  class MicrosoftSqlClientXmlTests (line 10) | [Collection("XmlTests")]
  class XmlTests (line 13) | public abstract class XmlTests<TProvider> : TestBase<TProvider> where TP...
    method CommonXmlTypesSupported (line 15) | [Fact]
    class Foo (line 33) | public class Foo
Condensed preview — 221 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,390K chars).
[
  {
    "path": ".editorconfig",
    "chars": 2849,
    "preview": "# EditorConfig is awesome:http://EditorConfig.org\n\n# top-most EditorConfig file\nroot = true\n\n# Don't use tabs for indent"
  },
  {
    "path": ".gitattributes",
    "chars": 768,
    "preview": "* text=auto\n\n*.doc  diff=astextplain\n*.DOC\tdiff=astextplain\n*.docx\tdiff=astextplain\n*.DOCX\tdiff=astextplain\n*.dot\tdiff="
  },
  {
    "path": ".github/FUNDING.yml",
    "chars": 130,
    "preview": "# These are supported funding model platforms\n\ngithub: [mgravell, dapperlib]\ncustom: [\"https://www.buymeacoffee.com/marc"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 1012,
    "preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: bug, needs-triage\nassignees: ''\n\n---\n\n*"
  },
  {
    "path": ".github/workflows/cla.yml",
    "chars": 2622,
    "preview": "name: \"CLA Assistant\"\non:\n  issue_comment:\n    types: [created]\n  pull_request_target:\n    types: [opened,closed,synchro"
  },
  {
    "path": ".github/workflows/main.yml",
    "chars": 2023,
    "preview": "name: Main Build\n\non:\n  pull_request:\n  push:\n    branches:\n    - main\n    paths:\n    - '*'\n    - '!/docs/*' # Don't run"
  },
  {
    "path": ".gitignore",
    "chars": 257,
    "preview": "/*.suo\n.vs/\n.vscode/\nbin/\nobj/\n/*.user\n_Resharper*\n.hgtags\nNuGet.exe\n*.user\n*.nupkg\n.nupkgs/\n.docstats\n*.ide/\n*.lock.jso"
  },
  {
    "path": "Build.csproj",
    "chars": 257,
    "preview": "<Project Sdk=\"Microsoft.Build.Traversal/2.0.24\">\r\n  <ItemGroup>\r\n    <ProjectReference Include=\"benchmarks/**/*.csproj\" "
  },
  {
    "path": "Dapper/CommandDefinition.cs",
    "chars": 8863,
    "preview": "using System;\r\nusing System.Data;\r\nusing System.Reflection;\r\nusing System.Reflection.Emit;\r\nusing System.Threading;\r\n\r\n"
  },
  {
    "path": "Dapper/CommandFlags.cs",
    "chars": 658,
    "preview": "using System;\r\n\r\nnamespace Dapper\r\n{\r\n    /// <summary>\r\n    /// Additional state flags that control command behaviour\r"
  },
  {
    "path": "Dapper/CompiledRegex.cs",
    "chars": 2635,
    "preview": "using System.Diagnostics.CodeAnalysis;\r\nusing System.Text.RegularExpressions;\r\n\r\nnamespace Dapper;\r\n\r\ninternal static p"
  },
  {
    "path": "Dapper/CustomPropertyTypeMap.cs",
    "chars": 2528,
    "preview": "using System;\r\nusing System.Reflection;\r\n\r\nnamespace Dapper\r\n{\r\n    /// <summary>\r\n    /// Implements custom property m"
  },
  {
    "path": "Dapper/Dapper.csproj",
    "chars": 1598,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n  <PropertyGroup>\r\n    <AssemblyName>Dapper</AssemblyName>\r\n    <Title>Dapper</Title"
  },
  {
    "path": "Dapper/DataTableHandler.cs",
    "chars": 452,
    "preview": "using System;\r\nusing System.Data;\r\nnamespace Dapper\r\n{\r\n    internal sealed class DataTableHandler : SqlMapper.ITypeHan"
  },
  {
    "path": "Dapper/DbString.cs",
    "chars": 3613,
    "preview": "using System;\r\nusing System.Data;\r\n\r\nnamespace Dapper\r\n{\r\n    /// <summary>\r\n    /// This class represents a SQL string"
  },
  {
    "path": "Dapper/DefaultTypeMap.cs",
    "chars": 11345,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Reflection;\r\n\r\nnamespace Dapper\r\n{\r\n"
  },
  {
    "path": "Dapper/DynamicParameters.CachedOutputSetters.cs",
    "chars": 531,
    "preview": "using System.Collections;\r\n\r\nnamespace Dapper\r\n{\r\n    public partial class DynamicParameters\r\n    {\r\n        // The typ"
  },
  {
    "path": "Dapper/DynamicParameters.ParamInfo.cs",
    "chars": 831,
    "preview": "using System;\r\nusing System.Data;\r\n\r\nnamespace Dapper\r\n{\r\n    public partial class DynamicParameters\r\n    {\r\n        pr"
  },
  {
    "path": "Dapper/DynamicParameters.cs",
    "chars": 21423,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Data;\r\nusing System.Linq;\r\nusing System.Linq.Expressions"
  },
  {
    "path": "Dapper/ExplicitConstructorAttribute.cs",
    "chars": 500,
    "preview": "using System;\r\n\r\nnamespace Dapper\r\n{\r\n    /// <summary>\r\n    /// Tell Dapper to use an explicit constructor, passing nu"
  },
  {
    "path": "Dapper/Extensions.cs",
    "chars": 1596,
    "preview": "using System;\r\nusing System.Threading.Tasks;\r\n\r\nnamespace Dapper\r\n{\r\n    internal static class Extensions\r\n    {\r\n     "
  },
  {
    "path": "Dapper/FeatureSupport.cs",
    "chars": 1260,
    "preview": "using System;\r\nusing System.Data;\r\n\r\nnamespace Dapper\r\n{\r\n    /// <summary>\r\n    /// Handles variances in features per "
  },
  {
    "path": "Dapper/Global.cs",
    "chars": 115,
    "preview": "using System.Runtime.CompilerServices;\r\n#if !STRONG_NAME\r\n[assembly: InternalsVisibleTo(\"Dapper.Tests\")]\r\n#endif\r\n"
  },
  {
    "path": "Dapper/NRT.cs",
    "chars": 354,
    "preview": "#if !NET5_0_OR_GREATER\r\nnamespace System.Diagnostics.CodeAnalysis\r\n{\r\n    [AttributeUsage(AttributeTargets.Parameter, I"
  },
  {
    "path": "Dapper/Properties/AssemblyInfo.cs",
    "chars": 831,
    "preview": "[module: System.Runtime.CompilerServices.SkipLocalsInit]\r\n\r\n#if !NET5_0_OR_GREATER\r\nnamespace System.Runtime.CompilerSe"
  },
  {
    "path": "Dapper/PublicAPI/net461/PublicAPI.Shipped.txt",
    "chars": 17,
    "preview": "#nullable enable"
  },
  {
    "path": "Dapper/PublicAPI/net461/PublicAPI.Unshipped.txt",
    "chars": 17,
    "preview": "#nullable enable"
  },
  {
    "path": "Dapper/PublicAPI/net8.0/PublicAPI.Shipped.txt",
    "chars": 18,
    "preview": "#nullable enable\n"
  },
  {
    "path": "Dapper/PublicAPI/net8.0/PublicAPI.Unshipped.txt",
    "chars": 17,
    "preview": "#nullable enable"
  },
  {
    "path": "Dapper/PublicAPI/netstandard2.0/PublicAPI.Shipped.txt",
    "chars": 17,
    "preview": "#nullable enable"
  },
  {
    "path": "Dapper/PublicAPI/netstandard2.0/PublicAPI.Unshipped.txt",
    "chars": 17,
    "preview": "#nullable enable"
  },
  {
    "path": "Dapper/PublicAPI.Shipped.txt",
    "chars": 46096,
    "preview": "#nullable enable\nabstract Dapper.SqlMapper.StringTypeHandler<T>.Format(T xml) -> string!\nabstract Dapper.SqlMapper.Stri"
  },
  {
    "path": "Dapper/PublicAPI.Unshipped.txt",
    "chars": 17,
    "preview": "#nullable enable"
  },
  {
    "path": "Dapper/SimpleMemberMap.cs",
    "chars": 2548,
    "preview": "using System;\r\nusing System.Reflection;\r\n\r\nnamespace Dapper\r\n{\r\n    /// <summary>\r\n    /// Represents simple member map"
  },
  {
    "path": "Dapper/SqlDataRecordHandler.cs",
    "chars": 542,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Data;\r\n\r\nnamespace Dapper\r\n{\r\n    internal sealed class "
  },
  {
    "path": "Dapper/SqlDataRecordListTVPParameter.cs",
    "chars": 4555,
    "preview": "using System;\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\nusing System.Data;\r\nusing System.Linq;\r\nus"
  },
  {
    "path": "Dapper/SqlMapper.Async.cs",
    "chars": 92924,
    "preview": "using System;\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\nusing System.Data;\r\nusing System.Data.Comm"
  },
  {
    "path": "Dapper/SqlMapper.CacheInfo.cs",
    "chars": 660,
    "preview": "using System;\r\nusing System.Data;\r\nusing System.Data.Common;\r\nusing System.Threading;\r\n\r\nnamespace Dapper\r\n{\r\n    publi"
  },
  {
    "path": "Dapper/SqlMapper.DapperRow.Descriptor.cs",
    "chars": 5590,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\n\r\nnamespace Dapper\r\n{\r\n    public stati"
  },
  {
    "path": "Dapper/SqlMapper.DapperRow.cs",
    "chars": 9030,
    "preview": "using System;\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\n\r\nnamespace Dapper\r\n{\r"
  },
  {
    "path": "Dapper/SqlMapper.DapperRowMetaObject.cs",
    "chars": 4280,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Reflection;\r\nnamespace Dapper\r\n{\r\n    public static part"
  },
  {
    "path": "Dapper/SqlMapper.DapperTable.cs",
    "chars": 1947,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\n\r\nnamespace Dapper\r\n{\r\n    public static partial class SqlMapper\r\n   "
  },
  {
    "path": "Dapper/SqlMapper.DeserializerState.cs",
    "chars": 493,
    "preview": "using System;\r\nusing System.Data;\r\nusing System.Data.Common;\r\n\r\nnamespace Dapper\r\n{\r\n    public static partial class Sq"
  },
  {
    "path": "Dapper/SqlMapper.DontMap.cs",
    "chars": 242,
    "preview": "namespace Dapper\r\n{\r\n    public static partial class SqlMapper\r\n    {\r\n        /// <summary>\r\n        /// Dummy type fo"
  },
  {
    "path": "Dapper/SqlMapper.GridReader.Async.cs",
    "chars": 14244,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Data.Common;\r\nusing System.Runtime.CompilerServices;\r\nus"
  },
  {
    "path": "Dapper/SqlMapper.GridReader.cs",
    "chars": 26142,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.Data;\r\nusing System.Data.C"
  },
  {
    "path": "Dapper/SqlMapper.ICustomQueryParameter.cs",
    "chars": 649,
    "preview": "using System.Data;\r\n\r\nnamespace Dapper\r\n{\r\n    public static partial class SqlMapper\r\n    {\r\n        /// <summary>\r\n   "
  },
  {
    "path": "Dapper/SqlMapper.IDataReader.cs",
    "chars": 9859,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Data;\r\nusing System.Data.Common;\r\n\r\nnamespace Dapper\r\n{\r"
  },
  {
    "path": "Dapper/SqlMapper.IDynamicParameters.cs",
    "chars": 688,
    "preview": "using System.Data;\r\n\r\nnamespace Dapper\r\n{\r\n    public static partial class SqlMapper\r\n    {\r\n        /// <summary>\r\n   "
  },
  {
    "path": "Dapper/SqlMapper.IMemberMap.cs",
    "chars": 988,
    "preview": "using System;\r\nusing System.Reflection;\r\n\r\nnamespace Dapper\r\n{\r\n    public static partial class SqlMapper\r\n    {\r\n     "
  },
  {
    "path": "Dapper/SqlMapper.IParameterCallbacks.cs",
    "chars": 471,
    "preview": "namespace Dapper\r\n{\r\n    public static partial class SqlMapper\r\n    {\r\n        /// <summary>\r\n        /// Extends IDyna"
  },
  {
    "path": "Dapper/SqlMapper.IParameterLookup.cs",
    "chars": 566,
    "preview": "namespace Dapper\r\n{\r\n    public static partial class SqlMapper\r\n    {\r\n        /// <summary>\r\n        /// Extends IDyna"
  },
  {
    "path": "Dapper/SqlMapper.ITypeHandler.cs",
    "chars": 1052,
    "preview": "using System;\r\nusing System.Data;\r\n\r\nnamespace Dapper\r\n{\r\n    public static partial class SqlMapper\r\n    {\r\n        ///"
  },
  {
    "path": "Dapper/SqlMapper.ITypeMap.cs",
    "chars": 1857,
    "preview": "using System;\r\nusing System.Reflection;\r\n\r\nnamespace Dapper\r\n{\r\n    public static partial class SqlMapper\r\n    {\r\n     "
  },
  {
    "path": "Dapper/SqlMapper.Identity.cs",
    "chars": 13376,
    "preview": "using System;\r\nusing System.ComponentModel;\r\nusing System.Data;\r\nusing System.Runtime.CompilerServices;\r\n\r\nnamespace Da"
  },
  {
    "path": "Dapper/SqlMapper.Link.cs",
    "chars": 2502,
    "preview": "using System.Diagnostics.CodeAnalysis;\r\nusing System.Threading;\r\n\r\nnamespace Dapper\r\n{\r\n    public static partial class"
  },
  {
    "path": "Dapper/SqlMapper.LiteralToken.cs",
    "chars": 950,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\n\r\nnamespace Dapper\r\n{\r\n    public static partial class SqlMapper\r\n   "
  },
  {
    "path": "Dapper/SqlMapper.Settings.cs",
    "chars": 7159,
    "preview": "using System;\r\nusing System.Data;\r\nusing System.Threading;\r\n\r\nnamespace Dapper\r\n{\r\n    public static partial class SqlM"
  },
  {
    "path": "Dapper/SqlMapper.TypeDeserializerCache.cs",
    "chars": 6590,
    "preview": "using System;\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\nusing System.Data.Common;\r\nusing System.Te"
  },
  {
    "path": "Dapper/SqlMapper.TypeHandler.cs",
    "chars": 3269,
    "preview": "using System;\r\nusing System.Data;\r\n\r\nnamespace Dapper\r\n{\r\n    public static partial class SqlMapper\r\n    {\r\n        ///"
  },
  {
    "path": "Dapper/SqlMapper.TypeHandlerCache.cs",
    "chars": 1483,
    "preview": "using System;\r\nusing System.ComponentModel;\r\nusing System.Data;\r\n\r\nnamespace Dapper\r\n{\r\n    public static partial class"
  },
  {
    "path": "Dapper/SqlMapper.cs",
    "chars": 213845,
    "preview": "/*\r\n License: http://www.apache.org/licenses/LICENSE-2.0\r\n Home page: https://github.com/DapperLib/Dapper-dot-net\r\n */\r"
  },
  {
    "path": "Dapper/TableValuedParameter.cs",
    "chars": 1919,
    "preview": "using System.Data;\r\n\r\nnamespace Dapper\r\n{\r\n    /// <summary>\r\n    /// Used to pass a DataTable as a TableValuedParamete"
  },
  {
    "path": "Dapper/TypeExtensions.cs",
    "chars": 328,
    "preview": "using System;\r\nusing System.Reflection;\r\n\r\nnamespace Dapper\r\n{\r\n    internal static class TypeExtensions\r\n    {\r\n      "
  },
  {
    "path": "Dapper/UdtTypeHandler.cs",
    "chars": 1448,
    "preview": "using System;\r\nusing System.Data;\r\n\r\nnamespace Dapper\r\n{\r\n    public static partial class SqlMapper\r\n    {\r\n        ///"
  },
  {
    "path": "Dapper/WrappedDataReader.cs",
    "chars": 558,
    "preview": "using System.Data;\r\n\r\nnamespace Dapper\r\n{\r\n    /// <summary>\r\n    /// Describes a reader that controls the lifetime of "
  },
  {
    "path": "Dapper/WrappedReader.cs",
    "chars": 17454,
    "preview": "using System;\r\nusing System.Collections;\r\nusing System.Collections.ObjectModel;\r\nusing System.Data;\r\nusing System.Data."
  },
  {
    "path": "Dapper/XmlHandlers.cs",
    "chars": 1206,
    "preview": "using System.Data;\r\nusing System.Xml;\r\nusing System.Xml.Linq;\r\n\r\nnamespace Dapper\r\n{\r\n    internal abstract class XmlTy"
  },
  {
    "path": "Dapper.EntityFramework/Dapper.EntityFramework.csproj",
    "chars": 948,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n  <PropertyGroup>\r\n    <AssemblyName>Dapper.EntityFramework</AssemblyName>\r\n    <Des"
  },
  {
    "path": "Dapper.EntityFramework/DbGeographyHandler.cs",
    "chars": 2085,
    "preview": "using Microsoft.SqlServer.Types;\r\nusing System;\r\nusing System.Data;\r\nusing System.Data.Entity.Spatial;\r\nusing System.Da"
  },
  {
    "path": "Dapper.EntityFramework/DbGeometryHandler.cs",
    "chars": 2057,
    "preview": "using Microsoft.SqlServer.Types;\r\nusing System;\r\nusing System.Data;\r\nusing System.Data.Entity.Spatial;\r\nusing System.Da"
  },
  {
    "path": "Dapper.EntityFramework/Handlers.cs",
    "chars": 486,
    "preview": "namespace Dapper.EntityFramework\r\n{\r\n    /// <summary>\r\n    /// Acts on behalf of all type-handlers in this package\r\n  "
  },
  {
    "path": "Dapper.EntityFramework/PublicAPI.Shipped.txt",
    "chars": 1090,
    "preview": "#nullable enable\nDapper.EntityFramework.DbGeographyHandler\nDapper.EntityFramework.DbGeographyHandler.DbGeographyHandler"
  },
  {
    "path": "Dapper.EntityFramework/PublicAPI.Unshipped.txt",
    "chars": 17,
    "preview": "#nullable enable"
  },
  {
    "path": "Dapper.EntityFramework.StrongName/Dapper.EntityFramework.StrongName.csproj",
    "chars": 1103,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n  <PropertyGroup>\r\n    <AssemblyName>Dapper.EntityFramework.StrongName</AssemblyName"
  },
  {
    "path": "Dapper.ProviderTools/BulkCopy.cs",
    "chars": 6377,
    "preview": "using System;\r\nusing System.Collections.Concurrent;\r\nusing System.Data;\r\nusing System.Data.Common;\r\nusing System.Linq.E"
  },
  {
    "path": "Dapper.ProviderTools/Dapper.ProviderTools.csproj",
    "chars": 1012,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n  <PropertyGroup>\r\n    <AssemblyName>Dapper.ProviderTools</AssemblyName>\r\n    <Packa"
  },
  {
    "path": "Dapper.ProviderTools/DbConnectionExtensions.cs",
    "chars": 5110,
    "preview": "using System;\r\nusing System.Collections.Concurrent;\r\nusing System.Data.Common;\r\nusing System.Linq.Expressions;\r\nusing S"
  },
  {
    "path": "Dapper.ProviderTools/DbExceptionExtensions.cs",
    "chars": 2403,
    "preview": "using System;\r\nusing System.Collections.Concurrent;\r\nusing System.Data.Common;\r\nusing System.Linq.Expressions;\r\nusing S"
  },
  {
    "path": "Dapper.ProviderTools/Internal/DynamicBulkCopy.cs",
    "chars": 2232,
    "preview": "using System;\r\nusing System.Data;\r\nusing System.Data.Common;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\n#"
  },
  {
    "path": "Dapper.ProviderTools/PublicAPI.Shipped.txt",
    "chars": 2810,
    "preview": "#nullable enable\nabstract Dapper.ProviderTools.BulkCopy.AddColumnMapping(int sourceColumn, int destinationColumn) -> vo"
  },
  {
    "path": "Dapper.ProviderTools/PublicAPI.Unshipped.txt",
    "chars": 17,
    "preview": "#nullable enable"
  },
  {
    "path": "Dapper.Rainbow/Dapper.Rainbow.csproj",
    "chars": 907,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n  <PropertyGroup>\r\n    <AssemblyName>Dapper.Rainbow</AssemblyName>\r\n    <PackageTags"
  },
  {
    "path": "Dapper.Rainbow/Database.Async.cs",
    "chars": 13714,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Data;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing Sys"
  },
  {
    "path": "Dapper.Rainbow/Database.cs",
    "chars": 24070,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Data;\r\nusing System.Collections.Conc"
  },
  {
    "path": "Dapper.Rainbow/IgnorePropertyAttribute.cs",
    "chars": 748,
    "preview": "using System;\r\n\r\nnamespace Dapper\r\n{\r\n    /// <summary>\r\n    /// Specifies whether a property should be ignored for dat"
  },
  {
    "path": "Dapper.Rainbow/Snapshotter.cs",
    "chars": 8877,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Reflection;\r\nusing System.Reflection"
  },
  {
    "path": "Dapper.Rainbow/SqlCompactDatabase.cs",
    "chars": 2665,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Data.Common;\r\nusing System.Linq;\r\n\r\nnamespace Dapper\r\n{\r"
  },
  {
    "path": "Dapper.Rainbow/readme.md",
    "chars": 2475,
    "preview": "# Using Dapper.Rainbow in C# for CRUD Operations\n\nThis guide outlines how to use `Dapper.Rainbow` in C# for CRUD operati"
  },
  {
    "path": "Dapper.SqlBuilder/Dapper.SqlBuilder.csproj",
    "chars": 1219,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n  <PropertyGroup>\r\n    <AssemblyName>Dapper.SqlBuilder</AssemblyName>\r\n    <PackageT"
  },
  {
    "path": "Dapper.SqlBuilder/PublicAPI.Shipped.txt",
    "chars": 1732,
    "preview": "#nullable enable\nDapper.SqlBuilder\nDapper.SqlBuilder.AddClause(string! name, string! sql, object? parameters, string! j"
  },
  {
    "path": "Dapper.SqlBuilder/PublicAPI.Unshipped.txt",
    "chars": 17,
    "preview": "#nullable enable"
  },
  {
    "path": "Dapper.SqlBuilder/Readme.md",
    "chars": 5149,
    "preview": "Dapper.SqlBuilder - a simple sql formatter for .Net\n========================================\n[![Build status](https://ci"
  },
  {
    "path": "Dapper.SqlBuilder/SqlBuilder.cs",
    "chars": 6529,
    "preview": "using System.Collections.Generic;\r\nusing System.Diagnostics.CodeAnalysis;\r\nusing System.Linq;\r\nusing System.Text.Regula"
  },
  {
    "path": "Dapper.StrongName/Dapper.StrongName.csproj",
    "chars": 1317,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n  <PropertyGroup>\r\n    <AssemblyName>Dapper.StrongName</AssemblyName>\r\n    <PackageT"
  },
  {
    "path": "Dapper.sln",
    "chars": 7941,
    "preview": "\r\nMicrosoft Visual Studio Solution File, Format Version 12.00\r\n# Visual Studio Version 17\r\nVisualStudioVersion = 17.7.3"
  },
  {
    "path": "Dapper.sln.DotSettings",
    "chars": 743,
    "preview": "<wpf:ResourceDictionary xml:space=\"preserve\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" xmlns:s=\"clr-namesp"
  },
  {
    "path": "Directory.Build.props",
    "chars": 2383,
    "preview": "<Project>\n  <PropertyGroup>\n    <Copyright>2019 Stack Exchange, Inc.</Copyright>\n\n    <TreatWarningsAsErrors>true</Treat"
  },
  {
    "path": "Directory.Build.targets",
    "chars": 487,
    "preview": "<Project>\n  <!-- workaround for deterministic builds; see https://github.com/clairernovotny/DeterministicBuilds -->\n  <P"
  },
  {
    "path": "Directory.Packages.props",
    "chars": 3339,
    "preview": "<Project>\n  <ItemGroup>\n    <!-- note: 6.2.0 has regressions; don't force the update -->\n    <PackageVersion Include=\"En"
  },
  {
    "path": "License.txt",
    "chars": 584,
    "preview": "The Dapper library and tools are licenced under Apache 2.0: http://www.apache.org/licenses/LICENSE-2.0\n\nThe Dapper logo "
  },
  {
    "path": "NonCLA.md",
    "chars": 1508,
    "preview": "# Dapper - the \"Non CLA\" CLA\n\nIANAL. YANAL (I hope). Let's keep this simple; if you want to contribute to Dapper, great!"
  },
  {
    "path": "Readme.md",
    "chars": 27926,
    "preview": "Dapper - a simple object mapper for .Net\n========================================\n[![Build status](https://ci.appveyor.c"
  },
  {
    "path": "appveyor.yml",
    "chars": 2086,
    "preview": "image: Visual Studio 2022\n\nskip_branch_with_pr: true\nskip_tags: true\nskip_commits:\n  files:\n    - '**/*.md'\n\nenvironment"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Benchmarks.Belgrade.cs",
    "chars": 1879,
    "preview": "using BenchmarkDotNet.Attributes;\r\nusing Belgrade.SqlClient.SqlDb;\r\nusing Belgrade.SqlClient;\r\nusing System.ComponentMo"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Benchmarks.Dapper.cs",
    "chars": 2160,
    "preview": "using BenchmarkDotNet.Attributes;\r\nusing Dapper.Contrib.Extensions;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\n"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Benchmarks.Dashing.cs",
    "chars": 1105,
    "preview": "#if NET4X\r\nusing System.ComponentModel;\r\nusing BenchmarkDotNet.Attributes;\r\nusing Dapper.Tests.Performance.Dashing;\r\nus"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Benchmarks.EntityFramework.cs",
    "chars": 1050,
    "preview": "using BenchmarkDotNet.Attributes;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\n\r\nnamespace Dapper.Tests.Performan"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Benchmarks.EntityFrameworkCore.cs",
    "chars": 1492,
    "preview": "using BenchmarkDotNet.Attributes;\r\nusing Dapper.Tests.Performance.EntityFrameworkCore;\r\nusing Microsoft.EntityFramework"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Benchmarks.HandCoded.cs",
    "chars": 3299,
    "preview": "using BenchmarkDotNet.Attributes;\r\nusing System;\r\nusing System.ComponentModel;\r\nusing System.Data;\r\nusing Microsoft.Dat"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Benchmarks.Linq2DB.cs",
    "chars": 1425,
    "preview": "using BenchmarkDotNet.Attributes;\r\n\r\nusing System;\r\nusing System.Linq;\r\nusing Dapper.Tests.Performance.Linq2Db;\r\nusing "
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Benchmarks.Linq2Sql.cs",
    "chars": 1449,
    "preview": "#if NET4X\r\nusing BenchmarkDotNet.Attributes;\r\nusing Dapper.Tests.Performance.Linq2Sql;\r\nusing System;\r\nusing System.Com"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Benchmarks.Massive.cs",
    "chars": 708,
    "preview": "using BenchmarkDotNet.Attributes;\r\nusing Massive;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\n\r\nnamespace Dapper"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Benchmarks.Mighty.cs",
    "chars": 1910,
    "preview": "using BenchmarkDotNet.Attributes;\r\nusing Mighty;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\n\r\nnamespace Dapper."
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Benchmarks.NHibernate.cs",
    "chars": 1961,
    "preview": "using BenchmarkDotNet.Attributes;\r\nusing Dapper.Tests.Performance.NHibernate;\r\nusing NHibernate;\r\nusing NHibernate.Crit"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Benchmarks.Norm.cs",
    "chars": 1574,
    "preview": "#if !NET4X\r\nusing BenchmarkDotNet.Attributes;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing Norm;\r\nusing Sys"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Benchmarks.PetaPoco.cs",
    "chars": 3703,
    "preview": "using BenchmarkDotNet.Attributes;\r\nusing BenchmarkDotNet.Jobs;\r\nusing PetaPoco;\r\nusing System.ComponentModel;\r\nusing Sy"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Benchmarks.RepoDB.cs",
    "chars": 2077,
    "preview": "using System.ComponentModel;\r\nusing System.Linq;\r\nusing BenchmarkDotNet.Attributes;\r\nusing RepoDb;\r\nusing RepoDb.DbHelp"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Benchmarks.ServiceStack.cs",
    "chars": 715,
    "preview": "using BenchmarkDotNet.Attributes;\r\nusing ServiceStack.OrmLite;\r\nusing System.ComponentModel;\r\nusing System.Data;\r\n\r\nnam"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Benchmarks.SqlMarshal.cs",
    "chars": 621,
    "preview": "using BenchmarkDotNet.Attributes;\r\nusing System.ComponentModel;\r\n\r\nnamespace Dapper.Tests.Performance\r\n{\r\n    [Descript"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Benchmarks.Susanoo.cs",
    "chars": 2293,
    "preview": "#if NET4X\r\nusing BenchmarkDotNet.Attributes;\r\nusing Susanoo;\r\nusing Susanoo.Processing;\r\nusing System.ComponentModel;\r\n"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Benchmarks.XPO.cs",
    "chars": 1848,
    "preview": "using BenchmarkDotNet.Attributes;\r\n\r\nusing System;\r\nusing System.Linq;\r\nusing System.ComponentModel;\r\nusing DevExpress."
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Benchmarks.cs",
    "chars": 1111,
    "preview": "using BenchmarkDotNet.Attributes;\r\nusing System;\r\nusing System.Configuration;\r\nusing Microsoft.Data.SqlClient;\r\n\r\nnames"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Config.cs",
    "chars": 1520,
    "preview": "using BenchmarkDotNet.Columns;\r\nusing BenchmarkDotNet.Configs;\r\nusing BenchmarkDotNet.Diagnosers;\r\nusing BenchmarkDotNe"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Dapper.Tests.Performance.csproj",
    "chars": 3056,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\n  <PropertyGroup>\n    <AssemblyName>Dapper.Tests.Performance</AssemblyName>\n    <Desc"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/DapperCacheImpact.cs",
    "chars": 2115,
    "preview": "using System.ComponentModel;\r\nusing BenchmarkDotNet.Attributes;\r\n\r\nnamespace Dapper.Tests.Performance\r\n{\r\n    [Descript"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Dashing/DashingConfiguration.cs",
    "chars": 243,
    "preview": "using Dashing.Configuration;\r\n\r\nnamespace Dapper.Tests.Performance.Dashing\r\n{\r\n    public class DashingConfiguration : "
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Dashing/Post.cs",
    "chars": 686,
    "preview": "using System;\r\n\r\nnamespace Dapper.Tests.Performance.Dashing\r\n{\r\n    public class Post\r\n    {\r\n        public int Id { g"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/EntityFramework/EFContext.cs",
    "chars": 338,
    "preview": "using System.Data.Common;\r\nusing System.Data.Entity;\r\n\r\nnamespace Dapper.Tests.Performance.EntityFramework\r\n{\r\n    publ"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/EntityFrameworkCore/EFCoreContext.cs",
    "chars": 531,
    "preview": "using Microsoft.EntityFrameworkCore;\r\n\r\nnamespace Dapper.Tests.Performance.EntityFrameworkCore\r\n{\r\n    public class EFC"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Helpers/ORMColum.cs",
    "chars": 1341,
    "preview": "using System.ComponentModel;\r\nusing System.Reflection;\r\nusing BenchmarkDotNet.Columns;\r\nusing BenchmarkDotNet.Reports;\r"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Helpers/ReturnColum.cs",
    "chars": 1214,
    "preview": "using BenchmarkDotNet.Columns;\r\nusing BenchmarkDotNet.Reports;\r\nusing BenchmarkDotNet.Running;\r\n\r\nnamespace Dapper.Test"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/LegacyTests.cs",
    "chars": 21473,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Data;\r\nusing Microsoft.Data.SqlClient;\r\nusing System.Dia"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Linq2DB/ConnectionStringSettings.cs",
    "chars": 353,
    "preview": "using LinqToDB.Configuration;\r\n\r\nnamespace Dapper.Tests.Performance.Linq2Db\r\n{\r\n    public class ConnectionStringSettin"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Linq2DB/Linq2DBContext.cs",
    "chars": 209,
    "preview": "using LinqToDB;\r\n\r\nnamespace Dapper.Tests.Performance.Linq2Db\r\n{\r\n    public class Linq2DBContext : LinqToDB.Data.DataC"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Linq2DB/Linq2DbSettings.cs",
    "chars": 1054,
    "preview": "using System.Collections.Generic;\r\nusing System.Linq;\r\nusing LinqToDB.Configuration;\r\n\r\nnamespace Dapper.Tests.Performa"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Linq2Sql/DataClasses.dbml",
    "chars": 1446,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?><Database Name=\"tempdb\" Class=\"DataClassesDataContext\" xmlns=\"http://schemas.micr"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Linq2Sql/DataClasses.dbml.layout",
    "chars": 736,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<ordesignerObjectsDiagram dslVersion=\"1.0.0.0\" absoluteBounds=\"0, 0, 11, 8.5\" na"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Linq2Sql/DataClasses.designer.cs",
    "chars": 14037,
    "preview": "#if NET4X\r\n#pragma warning disable 1591\r\n//----------------------------------------------------------------------------"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Massive/Massive.cs",
    "chars": 18950,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.Specialized;\r\nusing System.Data;\r\nusing Syst"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/NHibernate/NHibernateHelper.cs",
    "chars": 973,
    "preview": "using System.Reflection;\r\nusing NHibernate;\r\nusing NHibernate.Cfg;\r\n\r\nnamespace Dapper.Tests.Performance.NHibernate\r\n{\r"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/NHibernate/Post.hbm.xml",
    "chars": 1151,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<hibernate-mapping namespace=\"Dapper.Tests.Performance\" assembly=\"Dapper.Tests."
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/NHibernate/hibernate.cfg.xml",
    "chars": 632,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<hibernate-configuration xmlns=\"urn:nhibernate-configuration-2.2\">\n  <session-f"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/PetaPoco/PetaPoco.cs",
    "chars": 54629,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Configuration;\r\n"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Post.cs",
    "chars": 1583,
    "preview": "using System;\r\n\r\nnamespace Dapper.Tests.Performance\r\n{\r\n    [ServiceStack.DataAnnotations.Alias(\"Posts\")]\r\n    [LinqToD"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/Program.cs",
    "chars": 3565,
    "preview": "using BenchmarkDotNet.Running;\r\nusing System;\r\nusing Microsoft.Data.SqlClient;\r\nusing System.Linq;\r\nusing static System"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/SqlDataReaderHelper.cs",
    "chars": 902,
    "preview": "using System;\r\nusing Microsoft.Data.SqlClient;\r\nusing System.Runtime.CompilerServices;\r\n\r\nnamespace Dapper.Tests.Perfor"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/XPO/Post.cs",
    "chars": 827,
    "preview": "using System;\r\nusing DevExpress.Xpo;\r\n\r\nnamespace Dapper.Tests.Performance.Xpo\r\n{\r\n    [Persistent(\"Posts\")]\r\n    publi"
  },
  {
    "path": "benchmarks/Dapper.Tests.Performance/app.config",
    "chars": 287,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <connectionStrings>\n    <add name=\"Main\" connectionString=\"Dat"
  },
  {
    "path": "benchmarks/Directory.Build.props",
    "chars": 1299,
    "preview": "<Project>\n  <Import Project=\"$(MSBuildThisFileDirectory)..\\Directory.Build.props\" />\n  <PropertyGroup>\n    <SignAssembly"
  },
  {
    "path": "build.cmd",
    "chars": 247,
    "preview": "@ECHO OFF\nPowerShell -NoProfile -NoLogo -ExecutionPolicy unrestricted -Command \"[System.Threading.Thread]::CurrentThread"
  },
  {
    "path": "build.ps1",
    "chars": 1599,
    "preview": "[CmdletBinding(PositionalBinding=$false)]\nparam(\n    [bool] $CreatePackages,\n    [bool] $RunTests = $true,\n    [string] "
  },
  {
    "path": "docs/_config.yml",
    "chars": 26,
    "preview": "theme: jekyll-theme-cayman"
  },
  {
    "path": "docs/dapperplus.md",
    "chars": 869,
    "preview": "# Dapper and Dapper Plus\n\nDapper is the micro-ORM developed initially by Stack Overflow and now maintained independently"
  },
  {
    "path": "docs/docs.csproj",
    "chars": 218,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n  <!-- this is a placeholder to make it easier to use devenv to maintain files -->\r\n"
  },
  {
    "path": "docs/index.md",
    "chars": 14790,
    "preview": "# Dapper - a simple object mapper for .NET\n\n## Overview\n\nA brief guide is available [on github](https://github.com/Dappe"
  },
  {
    "path": "docs/readme.md",
    "chars": 1340,
    "preview": "# Dapper\n\nDapper is a simple micro-ORM used to simplify working with ADO.NET; if you like SQL but dislike the boilerplat"
  },
  {
    "path": "global.json",
    "chars": 78,
    "preview": "{\n  \"sdk\": {\n    \"version\": \"10.0.102\",\n    \"rollForward\": \"latestMajor\"\n  }\n}"
  },
  {
    "path": "nuget.config",
    "chars": 193,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<configuration>\n  <packageSources>\n    <clear />\n    <add key=\"NuGet\" value=\"htt"
  },
  {
    "path": "signatures/version1/cla.json",
    "chars": 31,
    "preview": "{\n   \"signedContributors\": []\n}"
  },
  {
    "path": "tests/Dapper.Tests/App.config",
    "chars": 424,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<configuration>\n  <runtime>\n    <assemblyBinding xmlns=\"urn:schemas-microsoft-c"
  },
  {
    "path": "tests/Dapper.Tests/AsyncTests.cs",
    "chars": 45395,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Data;\r\nusing System.Data.Common;\r\nusing System.Diagnosti"
  },
  {
    "path": "tests/Dapper.Tests/ConstructorTests.cs",
    "chars": 11094,
    "preview": "using System;\r\nusing System.Linq;\r\nusing Xunit;\r\n\r\nnamespace Dapper.Tests\r\n{\r\n    [Collection(\"ConstructorTests\")]\r\n   "
  },
  {
    "path": "tests/Dapper.Tests/Dapper.Tests.csproj",
    "chars": 2395,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\">\r\n  <PropertyGroup>\r\n    <AssemblyName>Dapper.Tests</AssemblyName>\r\n    <Description>D"
  },
  {
    "path": "tests/Dapper.Tests/DataReaderTests.cs",
    "chars": 13645,
    "preview": "using System.Collections.Generic;\r\nusing System.Data.Common;\r\nusing System.Linq;\r\nusing Xunit;\r\n\r\nnamespace Dapper.Test"
  },
  {
    "path": "tests/Dapper.Tests/DateTimeOnlyTests.cs",
    "chars": 3238,
    "preview": "using System;\r\nusing System.Threading.Tasks;\r\nusing Xunit;\r\n\r\n#if NET6_0_OR_GREATER\r\nnamespace Dapper.Tests;\r\n\r\n/* we d"
  },
  {
    "path": "tests/Dapper.Tests/DecimalTests.cs",
    "chars": 4564,
    "preview": "using System;\r\nusing System.Data;\r\nusing System.Linq;\r\nusing Xunit;\r\n\r\nnamespace Dapper.Tests\r\n{\r\n    [Collection(\"Deci"
  },
  {
    "path": "tests/Dapper.Tests/EnumTests.cs",
    "chars": 4503,
    "preview": "using System.Data;\r\nusing System.Linq;\r\nusing Xunit;\r\n\r\nnamespace Dapper.Tests\r\n{\r\n    [Collection(\"EnumTests\")]\r\n    p"
  },
  {
    "path": "tests/Dapper.Tests/Helpers/Attributes.cs",
    "chars": 3780,
    "preview": "using System;\r\nusing Xunit.Sdk;\r\n\r\nnamespace Dapper.Tests\r\n{\r\n    /// <summary>\r\n    /// <para>Override for <see cref=\""
  },
  {
    "path": "tests/Dapper.Tests/Helpers/Common.cs",
    "chars": 2766,
    "preview": "using System;\r\nusing System.Data;\r\nusing System.Data.Common;\r\nusing Xunit;\r\n\r\nnamespace Dapper.Tests\r\n{\r\n    public sta"
  },
  {
    "path": "tests/Dapper.Tests/Helpers/IsExternalInit.cs",
    "chars": 123,
    "preview": "namespace System.Runtime.CompilerServices;\r\n\r\n#if !NET5_0_OR_GREATER\r\ninternal static class IsExternalInit\r\n{\r\n}\r\n#endi"
  },
  {
    "path": "tests/Dapper.Tests/Helpers/SqlServerTypesLoader.cs",
    "chars": 2242,
    "preview": "using System;\r\nusing System.IO;\r\nusing System.Runtime.InteropServices;\r\n\r\nnamespace Dapper.Tests\r\n{\r\n    /// <summary>\r"
  },
  {
    "path": "tests/Dapper.Tests/Helpers/TransactedConnection.cs",
    "chars": 1793,
    "preview": "using System;\r\nusing System.Data;\r\n\r\nnamespace Dapper.Tests\r\n{\r\n    public class TransactedConnection : IDbConnection\r\n"
  },
  {
    "path": "tests/Dapper.Tests/Helpers/XunitSkippable.cs",
    "chars": 8171,
    "preview": "using System;\r\n\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Threading;\r\nusing System.Threading"
  },
  {
    "path": "tests/Dapper.Tests/LiteralTests.cs",
    "chars": 4306,
    "preview": "using System.Linq;\r\nusing Xunit;\r\n\r\nnamespace Dapper.Tests\r\n{\r\n    [Collection(\"LiteralTests\")]\r\n    public sealed clas"
  },
  {
    "path": "tests/Dapper.Tests/MiscTests.cs",
    "chars": 54108,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System.Data;\r\nusing System.Data.C"
  },
  {
    "path": "tests/Dapper.Tests/MultiMapTests.cs",
    "chars": 27447,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Data;\r\nusing System.Linq;\r\nusing Xunit;\r\n\r\nnamespace Dap"
  },
  {
    "path": "tests/Dapper.Tests/NullTests.cs",
    "chars": 2968,
    "preview": "using Xunit;\r\nusing System.Linq;\r\nnamespace Dapper.Tests\r\n{\r\n    [Collection(NonParallelDefinition.Name)]\r\n    public s"
  },
  {
    "path": "tests/Dapper.Tests/ParameterTests.cs",
    "chars": 69369,
    "preview": "using System;\r\nusing System.Collections;\r\nusing System.Collections.Generic;\r\nusing System.ComponentModel;\r\nusing System"
  },
  {
    "path": "tests/Dapper.Tests/ProcedureTests.cs",
    "chars": 13683,
    "preview": "using System;\r\nusing System.Data;\r\nusing System.Linq;\r\nusing System.Threading.Tasks;\r\nusing Xunit;\r\n\r\nnamespace Dapper."
  },
  {
    "path": "tests/Dapper.Tests/ProviderTests.cs",
    "chars": 3769,
    "preview": "using System;\r\nusing System.Data.Common;\r\nusing Dapper.ProviderTools;\r\nusing Xunit;\r\n\r\nnamespace Dapper.Tests\r\n{\r\n    p"
  },
  {
    "path": "tests/Dapper.Tests/Providers/DuckDBTests.cs",
    "chars": 2069,
    "preview": "using System;\r\nusing System.Data.Common;\r\nusing DuckDB.NET.Data;\r\nusing Xunit;\r\n\r\nnamespace Dapper.Tests\r\n{\r\n    public"
  },
  {
    "path": "tests/Dapper.Tests/Providers/EntityFrameworkTests.cs",
    "chars": 2650,
    "preview": "#if ENTITY_FRAMEWORK\r\nusing System;\r\nusing System.Data.Entity.Spatial;\r\nusing System.Linq;\r\nusing Xunit;\r\n\r\nnamespace D"
  },
  {
    "path": "tests/Dapper.Tests/Providers/FirebirdTests.cs",
    "chars": 2283,
    "preview": "using FirebirdSql.Data.FirebirdClient;\r\nusing System.Data;\r\nusing System.Data.Common;\r\nusing System.Linq;\r\nusing Xunit;"
  },
  {
    "path": "tests/Dapper.Tests/Providers/Linq2SqlTests.cs",
    "chars": 2221,
    "preview": "#if LINQ2SQL\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Th"
  },
  {
    "path": "tests/Dapper.Tests/Providers/MySQLTests.cs",
    "chars": 9261,
    "preview": "using System;\r\nusing System.Data;\r\nusing System.Data.Common;\r\nusing System.Linq;\r\nusing System.Threading.Tasks;\r\nusing "
  },
  {
    "path": "tests/Dapper.Tests/Providers/OLDEBTests.cs",
    "chars": 9596,
    "preview": "#if OLEDB\r\nusing System;\r\nusing System.Data.Common;\r\nusing System.Data.OleDb;\r\nusing System.Linq;\r\nusing Xunit;\r\n\r\nname"
  },
  {
    "path": "tests/Dapper.Tests/Providers/PostgresqlTests.cs",
    "chars": 5836,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Data;\r\nusing System.Data.Common;\r\nusing System.Linq;\r\nus"
  },
  {
    "path": "tests/Dapper.Tests/Providers/SnowflakeTests.cs",
    "chars": 2745,
    "preview": "#if !NETFRAMEWORK // platform not supported exception\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.I"
  },
  {
    "path": "tests/Dapper.Tests/Providers/SqliteTests.cs",
    "chars": 5866,
    "preview": "using Microsoft.Data.Sqlite;\r\nusing System;\r\nusing System.Data.Common;\r\nusing System.Linq;\r\nusing System.Threading;\r\nus"
  },
  {
    "path": "tests/Dapper.Tests/QueryMultipleTests.cs",
    "chars": 10070,
    "preview": "using System;\r\nusing System.Collections.Generic;\r\nusing System.Data;\r\nusing System.Linq;\r\nusing Xunit;\r\n\r\nnamespace Dap"
  },
  {
    "path": "tests/Dapper.Tests/SharedTypes/Address.cs",
    "chars": 244,
    "preview": "namespace Dapper.Tests\r\n{\r\n    public class Address\r\n    {\r\n        public int AddressId { get; set; }\r\n        public "
  },
  {
    "path": "tests/Dapper.Tests/SharedTypes/Bar1.cs",
    "chars": 138,
    "preview": "namespace Dapper.Tests\r\n{\r\n    public class Bar1\r\n    {\r\n        public int BarId;\r\n        public string? Name { get; "
  },
  {
    "path": "tests/Dapper.Tests/SharedTypes/Category.cs",
    "chars": 202,
    "preview": "namespace Dapper.Tests\r\n{\r\n    public class Category\r\n    {\r\n        public int Id { get; set; }\r\n        public string"
  },
  {
    "path": "tests/Dapper.Tests/SharedTypes/Comment.cs",
    "chars": 158,
    "preview": "namespace Dapper.Tests\r\n{\r\n    public class Comment\r\n    {\r\n        public int Id { get; set; }\r\n        public string?"
  },
  {
    "path": "tests/Dapper.Tests/SharedTypes/Dog.cs",
    "chars": 292,
    "preview": "using System;\r\n\r\nnamespace Dapper.Tests\r\n{\r\n    public class Dog\r\n    {\r\n        public int? Age { get; set; }\r\n       "
  },
  {
    "path": "tests/Dapper.Tests/SharedTypes/Enums.cs",
    "chars": 187,
    "preview": "namespace Dapper.Tests\r\n{\r\n    internal enum AnEnum\r\n    {\r\n        A = 2,\r\n        B = 1\r\n    }\r\n\r\n    internal enum A"
  },
  {
    "path": "tests/Dapper.Tests/SharedTypes/Foo1.cs",
    "chars": 132,
    "preview": "namespace Dapper.Tests\r\n{\r\n    public class Foo1\r\n    {\r\n        public int Id;\r\n        public int BarId { get; set; }"
  },
  {
    "path": "tests/Dapper.Tests/SharedTypes/HazNameId.cs",
    "chars": 153,
    "preview": "namespace Dapper.Tests\r\n{\r\n    public class HazNameId\r\n    {\r\n        public string? Name { get; set; }\r\n        public"
  },
  {
    "path": "tests/Dapper.Tests/SharedTypes/Index.cs",
    "chars": 110,
    "preview": "namespace Dapper.Tests\r\n{\r\n    public class Index\r\n    {\r\n        public string? Id { get; set; }\r\n    }\r\n}\r\n"
  }
]

// ... and 21 more files (download for full content)

About this extraction

This page contains the full source code of the DapperLib/Dapper GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 221 files (1.2 MB), approximately 282.2k tokens, and a symbol index with 2123 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!