Niubility.EmitMapper
2.0.3-prerelease.2
See the version list below for details.
dotnet add package Niubility.EmitMapper --version 2.0.3-prerelease.2
NuGet\Install-Package Niubility.EmitMapper -Version 2.0.3-prerelease.2
<PackageReference Include="Niubility.EmitMapper" Version="2.0.3-prerelease.2" />
paket add Niubility.EmitMapper --version 2.0.3-prerelease.2
#r "nuget: Niubility.EmitMapper, 2.0.3-prerelease.2"
// Install Niubility.EmitMapper as a Cake Addin #addin nuget:?package=Niubility.EmitMapper&version=2.0.3-prerelease.2&prerelease // Install Niubility.EmitMapper as a Cake Tool #tool nuget:?package=Niubility.EmitMapper&version=2.0.3-prerelease.2&prerelease
Project Description
Powerful customizable tool for mapping entities to each other. Entities can be plain objects, DataReaders, SQL commands and anything you need. The tool uses run-time code generation via the Emit library. It is useful for dealing with DTO objects, data access layers an so on.
Changelog
- Feb 8, 2022 The newest benchmark test is shown that the performance problem has been resolved. to see the method ToInt32(decimal?) of class NullableConverter
- Add github action for publish the package to nuget.org automatically
Road Map for migrating to netcore
you can unload the project EmitMapper if you have a plan to use this library
Step one Initial import all of the codes from older emitmapper - Done Compile success - Done
Step two Initial import all of the unit test code - Done Running success - Done
Step three Import all of components - Work in Process Running success
Supported platforms:
- NETStandard 2.1
- .Net Framework 4.8
- net 6.0
- netcore app 3.1
About Emit Mapper
- Overview
- Benefits of EmitMapper
- Getting started
- Type conversion
- Customization
Customization overview
Customization using default configurator
- Default configurator overview
- Custom converters
- Custom converters_for_generics
- Null substitution
- Ignoring members
- Custom constructors
- Shallow and_deep_mapping
- Names matching
- Post processing
Low-level customization using custom configuratorors
Emit Mapper in practice.
- Benchmark: EmitMapper vs Handwritten code vs AutoMapper
- Objects change tracking
- Mapping DbDatareader to objects
- Mapping objects to DbCommand (UPDATE and INSERT) Last edited Jan 11, 2010 at 3:01 PM by romankovs
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. 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 was computed. 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 was computed. 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. |
.NET Core | netcoreapp3.0 was computed. netcoreapp3.1 is compatible. |
.NET Standard | netstandard2.1 is compatible. |
.NET Framework | net48 is compatible. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETCoreApp 3.1
- Microsoft.Bcl.HashCode (>= 1.1.1)
- System.Reflection.Emit (>= 4.7.0)
-
.NETFramework 4.8
- Microsoft.Bcl.HashCode (>= 1.1.1)
- System.Reflection.Emit (>= 4.7.0)
-
.NETStandard 2.1
- Microsoft.Bcl.HashCode (>= 1.1.1)
- System.Reflection.Emit (>= 4.7.0)
-
net6.0
- Microsoft.Bcl.HashCode (>= 1.1.1)
- System.Reflection.Emit (>= 4.7.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Niubility.EmitMapper:
Package | Downloads |
---|---|
Niubility.LightDataAccess
# EmitMapper ## Project Description [![CI](https://github.com/niubilitynetcore/EmitMapper/actions/workflows/dotnet.yml/badge.svg) ](https://github.com/niubilitynetcore/EmitMapper/actions/workflows/dotnet.yml) [![NuGet](https://img.shields.io/nuget/v/Niubility.EmitMapper.svg) ](https://www.nuget.org/packages/Niubility.EmitMapper/) ## What is EmitMapper EmitMapper is a small library for parsing object-object clones, typically used to convert data objects into domain objects and vice versa. Powerful customizable tool for mapping entities to each other. Entities can be plain objects, DataReaders, SQL commands and anything you need. The tool uses run-time code generation via the Emit library. It is useful for dealing with DTO objects, data access layers an so on. ## How do I get started? ```c# var simple = Mapper.Default.GetMapper<BenchNestedSource, BenchNestedDestination>(); BenchNestedDestination dest = simple.Map(_benchSource); //for single object; List<BenchNestedDestination> dests = simple.MapEnum(_benchSources1000List);// for list object ``` ## Supported platforms: * NETStandard 2.1 * .Net Framework 4.8 * net 6.0 * netcore app 3.1 ### Where can I get it? First, [install NuGet](http://docs.nuget.org/docs/start-here/installing-nuget). Then, install [EmitMapper](https://www.nuget.org/packages/Niubility.EmitMapper/) from the package manager console: ```dos Install-Package Niubility.EmitMapper ``` ## About Emit Mapper * Overview * Benefits of EmitMapper * Getting started * Type conversion * Customization # Customization overview Customization using default configurator * Default configurator overview * Custom converters * Custom converters_for_generics * Null substitution * Ignoring members * Custom constructors * Shallow and_deep_mapping * Names matching * Post processing Low-level customization using custom configuratorors # Emit Mapper in practice. * Benchmark: EmitMapper vs Handwritten code vs AutoMapper * Objects change tracking * Mapping DbDatareader to objects * Mapping objects to DbCommand (UPDATE and INSERT) Last edited Jan 11, 2010 at 3:01 PM by romankovs ## Benchmark ``` ini BenchmarkDotNet=v0.13.1, OS=Windows 10.0.18363.2037 (1909/November2019Update/19H2) Intel Core i5-8350U CPU 1.70GHz (Kaby Lake R), 1 CPU, 8 logical and 4 physical cores .NET SDK=6.0.101 [Host] : .NET 6.0.1 (6.0.121.56705), X64 RyuJIT .NET 6.0 : .NET 6.0.1 (6.0.121.56705), X64 RyuJIT Job=.NET 6.0 Runtime=.NET 6.0 ``` | Method | Mean | Error | StdDev | Median | Ratio | Gen 0 | Gen 1 | Allocated | |----------------------------- |---------------:|------------:|------------:|---------------:|------:|-------:|-------:|----------:| | BenchNested_a_HardMapper | 0.8563 ns | 0.0173 ns | 0.0341 ns | 0.8489 ns | 1.00 | 0.0010 | - | 3 B | | BenchNested_b_EmitMapper | 0.8897 ns | 0.0431 ns | 0.1264 ns | 0.8451 ns | 1.00 | 0.0010 | - | 3 B | | BenchNested_c_AutoMapper | 16.5678 ns | 0.7823 ns | 2.2945 ns | 16.7384 ns | 1.00 | 0.0009 | - | 3 B | | BenchNested1000_a_HardMapper | 3,988.9549 ns | 79.6474 ns | 97.8142 ns | 3,965.5109 ns | 1.00 | 0.4766 | 0.2344 | 3,024 B | | BenchNested1000_b_EmitMapper | 3,781.9851 ns | 74.5756 ns | 122.5298 ns | 3,776.3773 ns | 1.00 | 0.4766 | 0.2344 | 3,024 B | | BenchNested1000_c_AutoMapper | 16,978.1985 ns | 333.1485 ns | 396.5896 ns | 16,966.0594 ns | 1.00 | 0.4688 | 0.2188 | 3,033 B | | SimpleTypes_a_HardMapper | 0.0310 ns | 0.0008 ns | 0.0023 ns | 0.0307 ns | 1.00 | 0.0000 | - | - | | SimpleTypes_b_EmitMapper | 0.0512 ns | 0.0009 ns | 0.0010 ns | 0.0513 ns | 1.00 | 0.0000 | - | - | | SimpleTypes_c_AutoMapper | 0.1718 ns | 0.0035 ns | 0.0076 ns | 0.1709 ns | 1.00 | 0.0000 | - | - | | SimpleTypes100_a_HardMapper | 4.0774 ns | 0.0804 n |
|
Niubility.EmitMapper.Mvc.Net
# EmitMapper ## Project Description [![CI](https://github.com/niubilitynetcore/EmitMapper/actions/workflows/dotnet.yml/badge.svg) ](https://github.com/niubilitynetcore/EmitMapper/actions/workflows/dotnet.yml) [![NuGet](https://img.shields.io/nuget/v/Niubility.EmitMapper.svg) ](https://www.nuget.org/packages/Niubility.EmitMapper/) ## What is EmitMapper EmitMapper is a small library for parsing object-object clones, typically used to convert data objects into domain objects and vice versa. Powerful customizable tool for mapping entities to each other. Entities can be plain objects, DataReaders, SQL commands and anything you need. The tool uses run-time code generation via the Emit library. It is useful for dealing with DTO objects, data access layers an so on. ## How do I get started? ```c# var simple = Mapper.Default.GetMapper<BenchNestedSource, BenchNestedDestination>(); BenchNestedDestination dest = simple.Map(_benchSource); //for single object; List<BenchNestedDestination> dests = simple.MapEnum(_benchSources1000List);// for list object ``` ## Supported platforms: * NETStandard 2.1 * .Net Framework 4.8 * net 6.0 * netcore app 3.1 ### Where can I get it? First, [install NuGet](http://docs.nuget.org/docs/start-here/installing-nuget). Then, install [EmitMapper](https://www.nuget.org/packages/Niubility.EmitMapper/) from the package manager console: ```dos Install-Package Niubility.EmitMapper ``` ## About Emit Mapper * Overview * Benefits of EmitMapper * Getting started * Type conversion * Customization # Customization overview Customization using default configurator * Default configurator overview * Custom converters * Custom converters_for_generics * Null substitution * Ignoring members * Custom constructors * Shallow and_deep_mapping * Names matching * Post processing Low-level customization using custom configuratorors # Emit Mapper in practice. * Benchmark: EmitMapper vs Handwritten code vs AutoMapper * Objects change tracking * Mapping DbDatareader to objects * Mapping objects to DbCommand (UPDATE and INSERT) Last edited Jan 11, 2010 at 3:01 PM by romankovs ## Benchmark ``` ini BenchmarkDotNet=v0.13.1, OS=Windows 10.0.18363.2037 (1909/November2019Update/19H2) Intel Core i5-8350U CPU 1.70GHz (Kaby Lake R), 1 CPU, 8 logical and 4 physical cores .NET SDK=6.0.101 [Host] : .NET 6.0.1 (6.0.121.56705), X64 RyuJIT .NET 6.0 : .NET 6.0.1 (6.0.121.56705), X64 RyuJIT Job=.NET 6.0 Runtime=.NET 6.0 ``` | Method | Mean | Error | StdDev | Median | Ratio | Gen 0 | Gen 1 | Allocated | |----------------------------- |---------------:|------------:|------------:|---------------:|------:|-------:|-------:|----------:| | BenchNested_a_HardMapper | 0.8563 ns | 0.0173 ns | 0.0341 ns | 0.8489 ns | 1.00 | 0.0010 | - | 3 B | | BenchNested_b_EmitMapper | 0.8897 ns | 0.0431 ns | 0.1264 ns | 0.8451 ns | 1.00 | 0.0010 | - | 3 B | | BenchNested_c_AutoMapper | 16.5678 ns | 0.7823 ns | 2.2945 ns | 16.7384 ns | 1.00 | 0.0009 | - | 3 B | | BenchNested1000_a_HardMapper | 3,988.9549 ns | 79.6474 ns | 97.8142 ns | 3,965.5109 ns | 1.00 | 0.4766 | 0.2344 | 3,024 B | | BenchNested1000_b_EmitMapper | 3,781.9851 ns | 74.5756 ns | 122.5298 ns | 3,776.3773 ns | 1.00 | 0.4766 | 0.2344 | 3,024 B | | BenchNested1000_c_AutoMapper | 16,978.1985 ns | 333.1485 ns | 396.5896 ns | 16,966.0594 ns | 1.00 | 0.4688 | 0.2188 | 3,033 B | | SimpleTypes_a_HardMapper | 0.0310 ns | 0.0008 ns | 0.0023 ns | 0.0307 ns | 1.00 | 0.0000 | - | - | | SimpleTypes_b_EmitMapper | 0.0512 ns | 0.0009 ns | 0.0010 ns | 0.0513 ns | 1.00 | 0.0000 | - | - | | SimpleTypes_c_AutoMapper | 0.1718 ns | 0.0035 ns | 0.0076 ns | 0.1709 ns | 1.00 | 0.0000 | - | - | | SimpleTypes100_a_HardMapper | 4.0774 ns | 0.0804 n |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated | |
---|---|---|---|
2.1.8 | 4,523 | 7/8/2022 | |
2.1.7 | 2,937 | 5/10/2022 | |
2.1.6 | 3,091 | 4/22/2022 | |
2.1.5 | 3,011 | 4/22/2022 | |
2.1.5-priview.2 | 125 | 4/22/2022 | |
2.1.5-priview.1 | 117 | 4/22/2022 | |
2.1.4 | 3,161 | 3/9/2022 | |
2.1.4-preview.9 | 119 | 3/9/2022 | |
2.1.4-preview.8 | 120 | 3/9/2022 | |
2.1.4-preview.7 | 122 | 3/8/2022 | |
2.1.4-preview.6 | 119 | 3/7/2022 | |
2.1.4-preview.5 | 110 | 3/7/2022 | |
2.1.4-preview.4 | 122 | 3/7/2022 | |
2.1.4-preview.3 | 147 | 3/7/2022 | |
2.1.4-preview.2 | 159 | 3/7/2022 | |
2.1.4-preview.1 | 152 | 3/7/2022 | |
2.1.3 | 3,080 | 3/7/2022 | |
2.1.2 | 3,083 | 3/4/2022 | |
2.1.2-beta.7 | 127 | 3/4/2022 | |
2.1.2-beta.6 | 119 | 3/4/2022 | |
2.1.2-beta.5 | 116 | 3/4/2022 | |
2.1.2-beta.3 | 121 | 3/4/2022 | |
2.1.2-beta.2 | 128 | 3/4/2022 | |
2.1.2-beta.1 | 124 | 3/4/2022 | |
2.1.1 | 3,057 | 3/4/2022 | |
2.1.1-beta.2 | 118 | 3/4/2022 | |
2.1.1-beta.1 | 116 | 3/3/2022 | |
2.1.0 | 950 | 2/23/2022 | |
2.0.3-prerelease.4 | 129 | 2/17/2022 | |
2.0.3-prerelease.3 | 113 | 2/17/2022 | |
2.0.3-prerelease.2 | 124 | 2/17/2022 | |
2.0.3-prerelease.1 | 117 | 2/17/2022 | |
2.0.2 | 936 | 2/16/2022 | |
2.0.1-build.1 | 121 | 2/8/2022 | |
2.0.0 | 955 | 2/8/2022 | |
2.0.0-build.3 | 120 | 2/8/2022 | |
2.0.0-build.2 | 121 | 2/8/2022 | |
2.0.0-build.1 | 124 | 2/8/2022 |
Optimized the performance