Dapper.CustomTypeHandlers
2.1.0
See the version list below for details.
dotnet add package Dapper.CustomTypeHandlers --version 2.1.0
NuGet\Install-Package Dapper.CustomTypeHandlers -Version 2.1.0
<PackageReference Include="Dapper.CustomTypeHandlers" Version="2.1.0" />
paket add Dapper.CustomTypeHandlers --version 2.1.0
#r "nuget: Dapper.CustomTypeHandlers, 2.1.0"
// Install Dapper.CustomTypeHandlers as a Cake Addin #addin nuget:?package=Dapper.CustomTypeHandlers&version=2.1.0 // Install Dapper.CustomTypeHandlers as a Cake Tool #tool nuget:?package=Dapper.CustomTypeHandlers&version=2.1.0
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.1.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 (Travis CI).
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
Technologies
List of technologies, frameworks and libraries used for implementation: List of technologies, frameworks and libraries used for implementation:
- .NET 8.0 (platform)
- Dapper (micro ORM)
- System.Text.Json (JSON serialization/deserialization)
- NUnit (testing framework)
- SQLite (database for testing purpose)
- FluentAssertions (fluent API for asserting the result of unit tests)
^_-
Product | Versions 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. |
-
net6.0
- Dapper (>= 2.1.21)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0)
- System.Text.Json (>= 8.0.0)
-
net7.0
- Dapper (>= 2.1.21)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0)
- System.Text.Json (>= 8.0.0)
-
net8.0
- Dapper (>= 2.1.21)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.0)
- System.Text.Json (>= 8.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Added custom type handler for GUIDs and changed the way how can configure the serializers during handlers registration