zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    在IIS上搭建WebSocket服务器(一)
    ngnix 一 入门指南
    博客园的打赏功能
    Java基础(十)内部类
    Java虚拟机之垃圾回收详解一
    Servlet问题:servlet cannot be resolved to a type解决办法
    WIN7局域网文件共享设置方法
    基于tcp的socket通信
    java基础之抽象类的介绍
    Hdfs详解
  • 原文地址:https://www.cnblogs.com/wdfrog/p/2550217.html
Copyright © 2011-2022 走看看