关于NewtonsoftJson在循环时候的外键错误
2017-07-20 17:38
134 查看
1.在使用EF时,由于数据库主外键关联,将对象进行Json序列化时会遇到循环引用的问题
下面是解决后的代码 本代码位于一般处理程序
int PageIndex = int.Parse(context.Request.Form["PageIndex"]);
int PageSize = int.Parse(context.Request.Form["PageSize"]);
PMarkModel.PMarkContext PMarkDB = new PMarkModel.PMarkContext();
#region 正序
var c = PMarkDB.UserCustomers.OrderBy(n => n.UserCustomerId).
Skip((PageIndex - 1) * PageSize)
.Take(PageSize).ToList();
#endregion
#region 倒序
//var c2 = PMarkDB.UserCustomers.OrderByDescending(n => n.UserCustomerId).
// Skip((PageIndex - 1) * PageSize).Take(PageSize).ToList();
#endregion
//这里是关键
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.MissingMemberHandling = MissingMemberHandling.Ignore;
string retJ = JsonConvert.SerializeObject(c, settings);
return retJ;
然后在各个对象实体类中 找到所有的外键 添上 [JsonIgnore] ,如下:
[JsonIgnore]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<UserCustomerMB> UserCustomerMBs { get; set; }
这2个需要同时结合,才可以。
此文经过本人检测ok,解决方案为:让newtonsoftjson 在转换json 的时候忽略外键
下面是解决后的代码 本代码位于一般处理程序
int PageIndex = int.Parse(context.Request.Form["PageIndex"]);
int PageSize = int.Parse(context.Request.Form["PageSize"]);
PMarkModel.PMarkContext PMarkDB = new PMarkModel.PMarkContext();
#region 正序
var c = PMarkDB.UserCustomers.OrderBy(n => n.UserCustomerId).
Skip((PageIndex - 1) * PageSize)
.Take(PageSize).ToList();
#endregion
#region 倒序
//var c2 = PMarkDB.UserCustomers.OrderByDescending(n => n.UserCustomerId).
// Skip((PageIndex - 1) * PageSize).Take(PageSize).ToList();
#endregion
//这里是关键
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.MissingMemberHandling = MissingMemberHandling.Ignore;
string retJ = JsonConvert.SerializeObject(c, settings);
return retJ;
然后在各个对象实体类中 找到所有的外键 添上 [JsonIgnore] ,如下:
[JsonIgnore]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<UserCustomerMB> UserCustomerMBs { get; set; }
这2个需要同时结合,才可以。
此文经过本人检测ok,解决方案为:让newtonsoftjson 在转换json 的时候忽略外键
相关文章推荐
- 关于创建FLex项目时候的 Cannot access the web server. The server may not be running, or the web root folder or root URL may be invalid.错误
- 关于json-lib 和hibernate一起使用的时候出现死循环的解决办法
- 创建外键的时候出错,错误码: 1005 Can't create table 'test_message.#sql-dd0_4' (errno: 150)
- 关于AJAX应用的时候,出现open("GET",url,true)错误的解决方法!
- 关于托管程序退出时候的"code c0020001"错误
- 在创建外键约束的时候, 设置级联删除为SET NULL执行sql语句的时候显示有错误,(数据库为sqlserver2000)?
- 关于 加载第三方库的时候出现link2005 链接错误的解决办法
- 关于在CentOS 系统下使用 httpd服务器的时候,修改默认目录后 403 错误的解决(小白的实践),大婶漂过就好
- 关于Mysql建外键报1215错误
- 关于在list的值在循环中remove时出现的错误的总结
- No.1 6.8号写多项式的时候,关于指针的错误
- 关于repo下载android代码时候错误的处理。
- 关于json-lib 和hibernate一起使用的时候出现死循环的解决办法
- 关于JAVA文件都在没问题,没有错误提示波浪线,但编译时候提示找不到对应包的问题
- VC中关于编译时候的错误提示:is not a precompiled header
- 关于eclipse在引用外来Crouton的库的时候出现 Could not find library.apk! 错误的处理
- 关于启动jboss时候 Could not start on port 1099 的错误
- 关于MySQL的外键创建的1215错误
- 关于mysql数据库的外键错误 #sql-a64_1' (errno: 121)
- 关于操作office时候报检索COM类工厂中 0000046 等 权限信息错误的最终解决办法。