zoukankan      html  css  js  c++  java
  • 序列化类型为“System.Data.Entity.DynamicProxies..."对象时检测到循环引用

    这是因为EF外键引起的序列化问题。

    解决方案:

    context.Configuration.ProxyCreationEnabled = false;

    这里我用的是一个基类控制器用于被继承 返回EF实例前加上这段代码就可以了

     1  //用于被继承
     2     public class BaseController : Controller
     3     {
     4         public CucuCarEntity db
     5         {
     6             get
     7             {
     8                 //从当前线程中获取该对象
     9                 CucuCarEntity db = CallContext.GetData("DB") as CucuCarEntity;
    10                 //判断该对象是否为空 
    11                 if (db == null)
    12                 {
    13                     //空的话就实例该对象
    14                     db = new CucuCarEntity();
    15                     //赋值
    16                     CallContext.SetData("DB", db);
    17                 }
    18                 //序列化类型为“System.Data.Entity.DynamicProxies.ActionInfo_”的对象时检测到循环引用。 加上这个就OK了
    19                 db.Configuration.ProxyCreationEnabled = false;
    20                 //返回
    21                 return db;
    22             }
    23         }
    24     }

    加粗标黄那句代码就可以解决这个Bug

    我还发现这个循环引用,是EF在根据实体映射的时候,在构造方法中创建新的实例,实例之间循环引用了。可以把相应的实例注释掉,就可以使用EF的懒加载了。

  • 相关阅读:
    泛型
    a版本冲刺第四天
    a版本冲刺第三天
    a版本冲刺第二天
    a版本冲刺第一天
    第四次团队作业——系统设计
    团队项目——需求规格说明书
    第二次团队作业——预则立&&他山之石
    团队项目选题报告
    Alpha 冲刺4
  • 原文地址:https://www.cnblogs.com/xiemin-minmin/p/11429130.html
Copyright © 2011-2022 走看看