Dapper.CustomTypeHandlers 2.3.1

dotnet add package Dapper.CustomTypeHandlers --version 2.3.1                
NuGet\Install-Package Dapper.CustomTypeHandlers -Version 2.3.1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Dapper.CustomTypeHandlers" Version="2.3.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Dapper.CustomTypeHandlers --version 2.3.1                
#r "nuget: Dapper.CustomTypeHandlers, 2.3.1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Dapper.CustomTypeHandlers as a Cake Addin
#addin nuget:?package=Dapper.CustomTypeHandlers&version=2.3.1

// Install Dapper.CustomTypeHandlers as a Cake Tool
#tool nuget:?package=Dapper.CustomTypeHandlers&version=2.3.1                

Dapper.CustomTypeHandlers NuGet Version

Dapper custom type handlers to serialize/deserialize objects to Xml and Json. Can be also used to map GUID to a string.

Installation

Use NuGet Package Manager

Install-Package Dapper.CustomTypeHandlers

or .NET CLI

dotnet add package Dapper.CustomTypeHandlers

or just copy into the project file to reference the package

<PackageReference Include="Dapper.CustomTypeHandlers" Version="2.3.0" />

How to use

  • Create class that implements IXmlObjectType or IJsonObjectType interface
public class Book
{
	public long Id { get; set; }
	public string Title { get; set; }
	public BookDescription Description { get; set; }
}

public class BookDescription : IXmlObjectType
{
	public Learn Learn { get; set; }
	public string About { get; set; }
	public Features Features { get; set; }
}

public class Learn
{
	public List<string> Points { get; set; }
}

public class Features
{
	public List<string> Points { get; set; }
}
  • Register these new classes in Startup.cs
services.RegisterDapperCustomTypeHandlers(typeof(Book).Assembly);
  • Create table in a database that contains a column of the XML type (SQL Server)
CREATE TABLE [dbo].[Books](
	[Id] bigint IDENTITY(1,1) NOT NULL,
	[Title] nvarchar(200) NOT NULL,
	[Description] xml NULL
	CONSTRAINT [PK_Books] PRIMARY KEY CLUSTERED
	(
		[Id] ASC
	)
)

To persist object as a JSON, you can use the nvarchar field (class should implement IJsonObjectType)

CREATE TABLE [dbo].[Books](
	[Id] bigint IDENTITY(1,1) NOT NULL,
	[Title] nvarchar(200) NOT NULL,
	[Description] nvarchar(max) NULL
	CONSTRAINT [PK_Books] PRIMARY KEY CLUSTERED
	(
		[Id] ASC
	)
)
  • Use Dapper to save object data in the database
public async Task SaveBook(Book book)
{
	using (var conn = _connectionFactory.Connection())
	{
		await conn.ExecuteAsync(_@"INSERT INTO Books (Title, Description) VALUES (@Title, @Description)", book);
	}
}

How to Test

Every commit or pull request is built and tested on the Continuous Integration system.

To test locally:

  • Download and install .NET 8.0 SDK
  • Clone or download source code
git clone https://github.com/kubagdynia/Dapper.CustomTypeHandlers.git
  • Start tests from the command line
dotnet test ./Dapper.CustomTypeHandlers/

Code Examples

Technologies

List of technologies, frameworks and libraries used for implementation:

License

This project is licensed under the MIT License.

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.3.1 96 10/9/2024
2.3.0 133 9/9/2024
2.2.1 112 7/15/2024
2.2.0 193 1/17/2024
2.1.0 242 11/18/2023
2.0.0 158 10/31/2023
1.2.0 723 2/15/2020
1.1.1 593 1/25/2020
1.1.0 577 1/25/2020
1.0.2 476 1/19/2020
1.0.1 505 1/19/2020
1.0.0 500 1/19/2020

Fixed the security issue in System.Text.Json.