EntityChange 6.0.2
dotnet add package EntityChange --version 6.0.2
NuGet\Install-Package EntityChange -Version 6.0.2
<PackageReference Include="EntityChange" Version="6.0.2" />
<PackageVersion Include="EntityChange" Version="6.0.2" />
<PackageReference Include="EntityChange" />
paket add EntityChange --version 6.0.2
#r "nuget: EntityChange, 6.0.2"
#:package EntityChange@6.0.2
#addin nuget:?package=EntityChange&version=6.0.2
#tool nuget:?package=EntityChange&version=6.0.2
EntityChange
Library to compare two entity object graphs detecting changes
Download
The EntityChange library is available on nuget.org via package name EntityChange.
To install EntityChange, run the following command in the Package Manager Console
PM> Install-Package EntityChange
More information about NuGet package available at https://nuget.org/packages/EntityChange
Features
- Compare complete entity graph including child entities, collections and dictionaries
- Collection compare by index or element equality
- Dictionary compare by key
- Custom value string formatter
- Custom entity equality compare
- Markdown or Html change report formatter
Configuration
Configure the Contact properties and collections.
EntityChange.Configuration.Default.Configure(config => config
.Entity<Contact>(e =>
{
// set the FirstName display name
e.Property(p => p.FirstName).Display("First Name");
// compare the Roles collection by string equality
e.Collection(p => p.Roles)
.CollectionComparison(CollectionComparison.ObjectEquality)
.ElementEquality(StringEquality.OrdinalIgnoreCase);
// set how to format the EmailAddress entity as a string
e.Collection(p => p.EmailAddresses).ElementFormatter(v =>
{
var address = v as EmailAddress;
return address?.Address;
});
})
.Entity<EmailAddress>(e =>
{
e.Property(p => p.Address).Display("Email Address");
})
);
Comparison
Compare to Contact entities
// create comparer using default configuration
var comparer = new EntityComparer();
// compare original and current instances generating change list
var changes = comparer.Compare(original, current).ToList();
Change Report
Sample output from the MarkdownFormatter
OUTPUT
- Removed
AdministratorfromRoles - Changed
Email Addressfromuser@Personal.comtouser@gmail.com - Added
user@home.comtoEmail Addresses - Changed
StatusfromNewtoVerified - Changed
Updatedfrom5/17/2016 8:51:59 PMto5/17/2016 8:52:00 PM - Changed
Zipfrom10026to10027 - Changed
Numberfrom888-555-1212to800-555-1212 - Added
BlahtoCategories - Changed
Datafrom1to2 - Changed
Datafrom./hometo./path
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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 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. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- System.ComponentModel.Annotations (>= 5.0.0)
- System.ComponentModel.TypeConverter (>= 4.3.0)
- System.Text.Json (>= 9.0.6)
-
net8.0
- No dependencies.
-
net9.0
- No dependencies.
NuGet packages (2)
Showing the top 2 NuGet packages that depend on EntityChange:
| Package | Downloads |
|---|---|
|
MediatR.CommandQuery.Audit
CQRS framework based on MediatR |
|
|
KickStart.EntityChange
Provides EntityChange integration for KickStart, enabling efficient entity change tracking and startup configuration for .NET applications. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 6.0.2 | 381 | 6/30/2025 |
| 6.0.1 | 1,861 | 3/24/2025 |
| 6.0.0 | 630 | 2/19/2025 |
| 6.0.0-beta.2 | 97 | 2/19/2025 |
| 6.0.0-beta.1 | 112 | 2/19/2025 |
| 5.3.2 | 1,734 | 1/19/2025 |
| 5.3.1 | 6,698 | 5/1/2024 |
| 5.3.0 | 267 | 4/25/2024 |
| 5.2.0 | 982 | 3/25/2024 |
| 5.1.0 | 4,959 | 7/28/2023 |
| 5.0.21 | 2,311 | 12/28/2022 |
| 5.0.18 | 22,771 | 11/9/2022 |
| 5.0.14 | 488 | 11/7/2022 |
| 5.0.12 | 458 | 11/5/2022 |
| 4.1.0.104 | 10,248 | 3/31/2021 |
| 4.1.0.98 | 578 | 2/15/2021 |
| 4.1.0.97 | 517 | 2/15/2021 |
| 4.1.0.71 | 20,241 | 4/26/2020 |
| 4.0.0.66 | 1,693 | 4/11/2020 |
| 3.0.0.30 | 22,472 | 6/6/2019 |
| 3.0.0.29 | 3,767 | 11/5/2018 |
| 3.0.0.19 | 7,033 | 8/22/2017 |
| 2.1.0.16 | 13,206 | 3/6/2017 |
| 2.1.0.15 | 1,377 | 3/4/2017 |
| 2.0.0.11 | 2,345 | 7/14/2016 |
| 1.0.0.8 | 1,964 | 5/18/2016 |
| 1.0.0.7 | 1,419 | 5/18/2016 |
| 1.0.0.6 | 1,393 | 5/18/2016 |
| 1.0.0.5 | 1,385 | 5/16/2016 |
| 1.0.0.3 | 1,434 | 5/16/2016 |