序列化类型为“System.Data.Entity.DynamicProxies..."对象时检测到循环引用

Posted xiemin-minmin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了序列化类型为“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

以上是关于序列化类型为“System.Data.Entity.DynamicProxies..."对象时检测到循环引用的主要内容,如果未能解决你的问题,请参考以下文章

无法将匿名类型从“System.Linq.IQueryable”转换为“System.Data.Entity.Core.Objects.ObjectQuery”

为啥实体框架 6.1.3 抛出“无法加载类型‘System.Data.Entity.Infrastructure.TableExistenceChecker’”

找不到源类型“System.Data.Entity.DbSet”的查询模式的实现

Entity Framework优化一:引发了“System.Data.Entity.Core.EntityCommandExecutionException”类型的异常

不能使用“System.Data.Entity.Core.Objects.ObjectQuery”类型的实例调用

无法加载实体框架提供程序类型“System.Data.Entity.SqlServer.SqlProviderServices,EntityFramework.SqlServer”