您的位置:首页 > Web前端 > JavaScript

关于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 的时候忽略外键
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐