• EF 使用 POCO中的对象状态跟着


    EF4.1中,有DbChangeTracker对象,

    在设置ctx.Configuration.ProxyCreationEnabled = true|false; 两种取值时发现调整实体类属性时都能正确跟着
    使用代理类着可以理解,因为代理类可以截获属性的修改,但是不使用代理类是居然也可以。。。

    没有去看DBChangeTracker的具体实现,不过推测应该通过轮训机制或者通过在SaveChange等方法调用前执行内存中的快照与当前实体实际属性值比较来实现。

     

                var ctx = new lineDBContext();
    
                ctx.Configuration.ProxyCreationEnabled = false;
                ctx.Configuration.LazyLoadingEnabled = false;
    
                ctx.Configuration.AutoDetectChangesEnabled = true;
                var items = ctx.PersonClasses.ToList();
    
                items[0].ClassName = "333";
                Console.WriteLine(items[0].People.Count);
                Console.WriteLine(items[1].People.Count);
                var bhd=  ctx.ChangeTracker.Entries<PersonClass>().ToList();
              // items[0].ClassName = "333"; 放在这里将显示两个对象都是Unchanged状态,可见Entries<T>()方法会调用DetectChanges()
    
                
                Console.WriteLine(bhd[0].State);
                Console.WriteLine(bhd[1].State);

     

    参考:

    http://blogs.msdn.com/b/adonet/archive/2011/02/06/using-dbcontext-in-ef-feature-ctp5-part-12-automatically-detecting-changes.aspx

  • 相关阅读:
    IfcAxis2Placement3D
    IfcAxis2Placement2D
    IfcAxis1Placement
    realsense 深度数据
    realsense 深度数据
    realsense 深度数据
    sudo fdisk -l
    temviewer历史版本
    100/9801
    IfcPlacement
  • 原文地址:https://www.cnblogs.com/wdfrog/p/2550217.html
Copyright © 2020-2023  润新知