4.跟踪
Posted nocanstillbb
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4.跟踪相关的知识,希望对你有一定的参考价值。
默认情况下,ef在datacontext生命周期中跟踪已加载的实体
当操作数据库现有数据时,才会跟踪
如果在datacontext回收之前没savechanges,那么跟踪的状态就会丢失.
实体得要有主键属性才能跟踪
可以用下面的方法来跟踪datacontext的状态(Added Modified Deleted Unchanged Detached)
private static void DisplayTrackedEntities(DbChangeTracker changeTracker) var entries = changeTracker.Entries(); foreach (var entry in entries) Console.WriteLine("Entity Name: 0", entry.Entity.GetType().FullName); Console.WriteLine("Status: 0", entry.State);
输出Added
using (var context = new BookStore()) Console.WriteLine("Adding Author"); Author author = new Author() Name = "Mark" ; context.Authors.Add(author); Console.WriteLine("Context tracking changes of 0 entities.", context.ChangeTracker.Entries().Count()); DisplayTrackedEntities(context.ChangeTracker);
输出Modified
using (var context = new BookStore()) Console.WriteLine("Update Author"); Author author = context.Authors .FirstOrDefault(); author.Name = "Russell"; Console.WriteLine("Context tracking changes of 0 entities.", context.ChangeTracker.Entries().Count()); DisplayTrackedEntities(context.ChangeTracker);
输出Deleted
using (var context = new BookStore()) Console.WriteLine("Delete Author"); Author author = context.Authors .FirstOrDefault(); context.Authors.Remove(author); Console.WriteLine("Context tracking changes of 0 entities.", context.ChangeTracker.Entries().Count()); DisplayTrackedEntities(context.ChangeTracker);
输出Unchanged
using (var context = new BookStore()) Author author = context.Authors .FirstOrDefault(); Console.WriteLine("Context tracking changes of 0 entities.", context.ChangeTracker.Entries().Count()); DisplayTrackedEntities(context.ChangeTracker);
输出Detached
Author author; using(var context = new BookStore()) author = context.Authors .FirstOrDefault(); using (var context = new BookStore()) Console.Write(context.Entry(author).State);
以上是关于4.跟踪的主要内容,如果未能解决你的问题,请参考以下文章