zoukankan      html  css  js  c++  java
  • 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);
    }
  • 相关阅读:
    工作生活中需要知道的常识名词
    ICON的设计很重要
    100offer 为专业程序打造的招聘平台
    2014年工作生活大总结
    游戏模块分析总结(3)之引导篇
    游戏模块分析总结(2)之UI、操作篇
    数字证书及CA介绍
    Hyperledger Fabric密码模块系列之BCCSP(五)
    GDB十分钟教程
    Hyperledger Fabric密码模块系列之BCCSP(四)
  • 原文地址:https://www.cnblogs.com/nocanstillbb/p/11494560.html
Copyright © 2011-2022 走看看