Skip to content

feeleen/POCOChangeTracker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build status

POCOChangeTracker

Simple Change Tracker for POCO objects

Usage example:

POCO entity

[Table(Name = "Customers")]
public class Customer : ChangeTrackedPOCO<Customer>
{
  [PrimaryKey]
  public virtual string CustomerID { get; set; }
  [Column]
  public virtual string CompanyName { get; set; }
  [Column]
  public virtual string ContactName { get; set; }
  [Column]
  public virtual string ContactTitle { get; set; }
  [Column]
  public virtual string Address { get; set; }
  [Column]
  public virtual string City { get; set; }
  [Column]
  public virtual string Region { get; set; }
  [Column]
  public virtual string PostalCode { get; set; }
}

Use with Linq2db

using (var db = new DbContext())
{
  var customer = db.Customers.Take(1).First();
  
  // here we start change tracking of the object
  customer.AcceptChanges();
  
  customer.CompanyName = DateTime.Now.Ticks.ToString();

  // check if something changed
  var changes = customer.GetChangedProperties();

  // get old value
  var old = customer.GetOldValue(x => x.CompanyName);

  if (changes.Count > 0)
  {
    // update database record only with changed properties
    db.Update(customer, (a, b) => changes.Contains(b.ColumnName)); 
  }
}

About

Simple Change Tracker for POCO objects

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages