using System.Data.Entity;
using Z.EntityFramework.Plus;
public static void Main()
using (var context = new EntityContext())
context.Customers.Add(new Customer() { Name ="Customer_A", IsActive = false });
context.Customers.Add(new Customer() { Name ="Customer_B", IsActive = true });
context.Customers.Add(new Customer() { Name ="Customer_C", IsActive = false });
context.SaveChanges(new Audit());
FiddleHelper.WriteTable("1 - Before", context.Customers);
using(var context = new EntityContext())
var customers = context.Customers.AsNoTracking().ToList();
FiddleHelper.WriteTable(context.AuditEntries.Where<Customer>(1).AsNoTracking().ToList());
FiddleHelper.WriteTable(context.AuditEntries.Where<Customer>(customers.First()).AsNoTracking().ToList());
FiddleHelper.WriteTable(context.AuditEntries.Where(customers.First()).AsNoTracking().ToList());
FiddleHelper.WriteTable(context.AuditEntries.Where<Customer>(customers.First().CustomerID).AsNoTracking().ToList());
public class EntityContext : DbContext
AuditManager.DefaultConfiguration.AutoSavePreAction = (context, audit) =>
(context as EntityContext).AuditEntries.AddRange(audit.Entries);
public EntityContext() : base(FiddleHelper.GetConnectionStringSqlServer())
public DbSet<Customer> Customers { get; set; }
public DbSet<AuditEntry> AuditEntries { get; set; }
public int CustomerID { get; set; }
public string Name { get; set; }
public Boolean IsActive { get; set; }