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
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
Top comments (0)