最近某些巧合下重拾.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();
}
★其它,无非就是返回数据过滤掉外键属性。