EntityFramework 序列化类型为XX的对象时检测到循环引用
2016-10-30 22:33
302 查看
最近某些巧合下重拾.net 使用ef5 开发一个小型项目。
在项目里遇到 ef 外键关系导致 解析json时出现循环引用的错误。
自己查询相关资料总结了两条最好的解决方案,如下。
★第一种 如果是代码优先推荐这个
引用 Newtonsoft.Json
ef实体类中外键导航属性
[JsonIgnore] //加上这个特性 忽略json中的外键关系
public virtual ICollection<score> scores { get; set; }
具体实现
protected string VCOperationManBind(HttpContext context)
{
List<OperationMan> list = pmbll.GetList();
var result = JsonConvert.SerializeObject(list); //泛型直接转换成json 不会报循环引用的错误
return result;
}
★第二种 因为我使用的是数据库优先,所以我用这个方案,简单粗暴
public List<OperationMan> GetList()
{
db.Configuration.ProxyCreationEnabled = false;//有需要忽略外键导航属性的 直接在DAL层获取数据方法时标明
return db.OperationMan.ToList();
}
★其它,无非就是返回数据过滤掉外键属性。
在项目里遇到 ef 外键关系导致 解析json时出现循环引用的错误。
自己查询相关资料总结了两条最好的解决方案,如下。
★第一种 如果是代码优先推荐这个
引用 Newtonsoft.Json
ef实体类中外键导航属性
[JsonIgnore] //加上这个特性 忽略json中的外键关系
public virtual ICollection<score> scores { get; set; }
具体实现
protected string VCOperationManBind(HttpContext context)
{
List<OperationMan> list = pmbll.GetList();
var result = JsonConvert.SerializeObject(list); //泛型直接转换成json 不会报循环引用的错误
return result;
}
★第二种 因为我使用的是数据库优先,所以我用这个方案,简单粗暴
public List<OperationMan> GetList()
{
db.Configuration.ProxyCreationEnabled = false;//有需要忽略外键导航属性的 直接在DAL层获取数据方法时标明
return db.OperationMan.ToList();
}
★其它,无非就是返回数据过滤掉外键属性。
相关文章推荐
- 序列化类型为XX的对象时检测到循环引用
- ADO.NET 实体数据模型 异常-“序列化类型为 XX 的对象时检测到循环引用”
- 序列化类型为XX的对象时检测到循环引用
- 序列化类型为XX的对象时检测到循环引用
- 序列化类型为"xx”的对象时检测到循环引用。
- 序列化类型为XX的对象时检测到循环引用
- ADO.NET 实体数据模型 异常-“序列化类型为 XX 的对象时检测到循环引用”
- 序列化类型为XX的对象时检测到循环引用。
- 序列化类型为XX的对象时检测到循环引用
- MVC EF异常-“序列化类型为 XX 的对象时检测到循环引用”
- 序列化类型为XX的对象时检测到循环引用
- 序列化类型为“xxx”的对象时检测到循环引用
- 序列化类型为“****”的对象时检测到循环引用。
- System.InvalidOperationException: 生成 XML 文档时出错 这样的错误 序列化类型 xxx 的对象时检测到循环引用
- C# DataTable 对象转换成Json时 出现 序列化类型为“System.Reflection.Module”的对象时检测到循环引用 的错误!
- 序列化类型 System.Data.Entity.DynamicProxies 的对象时检测到循环引用
- 自定义JsonResult解决 序列化类型 System.Data.Entity.DynamicProxies 的对象时检测到循环引用
- 为什么 序列化类型为“System.Data.Entity.DynamicProxies.Photos....这个会的对象时检测到循环引用。
- 序列化类型为“System.Reflection.Module”的对象时检测到循环引用
- ajax调用webservice返回DataTable "序列化类型为“System.Reflection.Module”的对象时检测到循环引用