实体框架支持在上下文的生命周期内对加载的实体的自动更改跟踪。DbChangeTracker类为您提供了上下文跟踪的当前实体的所有信息。
请注意,每个实体必须具有EntityKey(主键)属性才能被上下文跟踪。实体框架不会在没有EntityKey属性的概念模型中添加任何实体。
以下代码片段显示了上下文类如何跟踪其中发生的实体和更改:
class Program { static void Main(string[] args) { using (var ctx = new Jason_TestEntities()) { wolf_example example = ctx.wolf_example.Find(20051); Console.WriteLine("Find wolf_example"); Console.WriteLine("{0}个实体的上下文跟踪更改", ctx.ChangeTracker.Entries().Count()); DisplayTrackedEntities(ctx.ChangeTracker); Console.WriteLine("Find Products"); var Products = ctx.Products.Find(112459); Console.WriteLine("{0}个实体的上下文跟踪更改", ctx.ChangeTracker.Entries().Count()); Products.ProductName = "修改111"; DisplayTrackedEntities(ctx.ChangeTracker); Console.WriteLine("Remove example"); Console.WriteLine(""); ctx.wolf_example.Remove(example); DisplayTrackedEntities(ctx.ChangeTracker); Console.ReadKey(); } } private static void DisplayTrackedEntities(DbChangeTracker changeTracker) { Console.WriteLine(""); var entries = changeTracker.Entries(); foreach (var entry in entries) { Console.WriteLine("Entity Name: {0}", entry.Entity.GetType().FullName); Console.WriteLine("Status: {0}", entry.State); } Console.WriteLine(""); Console.WriteLine("---------------------------------------"); } }