Overview
Library to compare two entity object graphs detecting changes
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
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
Install-Package EntityChange
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
Administrator
fromRoles
- Changed
Email Address
fromuser@Personal.com
touser@gmail.com
- Added
user@home.com
toEmail Addresses
- Changed
Status
fromNew
toVerified
- Changed
Updated
from5/17/2016 8:51:59 PM
to5/17/2016 8:52:00 PM
- Changed
Zip
from10026
to10027
- Changed
Number
from888-555-1212
to800-555-1212
- Added
Blah
toCategories
- Changed
Data
from1
to2
- Changed
Data
from./home
to./path
Top comments (0)