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 的时候忽略外键