ASP.NET Boilerplate v3.4 has just been released (see change logs). In this article, I will highlight some new features and changes.

Entity History
This was one of the most wanted features for a long time and it’s finally available.
Once you configure it for your entities, it can automatically write audit logs for every property change of an entity. There are three concepts for a database change:
- Entity Change Set: A set of changes in a single database save operation. It may contain one or more entity changes.
- Entity Change: A change (create, update or delete) for an entity. It belongs to an entity change set.
- Entity Property Change: A single property change of an entity. It belongs to an entity change.
So, for a relational database, all these changes are stored in three tables:

How to Enable?
It’s enabled by default, but this just enables logging the entity history. You should also enable it for your entities in PreInitialize method of your module. Example:
Configuration.EntityHistory.Selectors.Add("MyProjectEntities", typeof(Product), typeof(Order), typeof(Customer));
This code enables the entity history logging for Product, Order and Customer entities. “MyProjectEntities” is just a unique name for this configuration (then another module can remove the configuration by this name).
How to Change the Store?
ASP.NET Boilerplate is an extensible framework. If you want to write entity history logs to another destination (for example, to a non-relat