首页 > 其他 > 详细

4.跟踪

时间:2019-09-09 23:12:20      阅读:94      评论:0      收藏:0      [点我收藏+]

默认情况下,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.跟踪

原文:https://www.cnblogs.com/nocanstillbb/p/11494560.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!