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);
    }
  • 相关阅读:
    mssql sqlserver 验证整型函数分享
    SQL存储过程解密
    MSSQL sqlserver系统函数教程分享
    union的使用
    select子句
    软件测试用例设计方法
    软件测试模型与测试过程
    selenium定位元素方法
    kali渗透综合靶机(六)--FristiLeaks靶机
    kali渗透综合靶机(五)--zico2靶机
  • 原文地址:https://www.cnblogs.com/nocanstillbb/p/11494560.html
Copyright © 2011-2022 走看看