码迷,mamicode.com
首页 > 其他好文 > 详细

4.跟踪

时间:2019-09-09 22:27:25      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:count   sse   round   change   write   remove   name   efault   tor   

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

标签:count   sse   round   change   write   remove   name   efault   tor   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!