EntityFramework 序列化类型为XX的对象时检测到循环引用

来源:互联网 发布:知乎怎么评价百田圈圈 编辑:程序博客网 时间:2024/06/05 02:32

最近某些巧合下重拾.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();
}


★其它,无非就是返回数据过滤掉外键属性。


0 0
原创粉丝点击