主实体类:
[Table("Restaurant_Table_Base")] public class Restaurant_Table_Base { public string id { get; set; } public int glsort { get; set; } public string cmGuid { get; set; } /// <summary> /// 餐桌名称 /// </summary> public string name { get; set; } /// <summary> /// 餐台类型 /// </summary> public Restaurant_Table_Type_Enum type { get; set; } = Restaurant_Table_Type_Enum.餐桌; /// <summary> /// 餐台状态 /// </summary> public Restaurant_Table_State_Enum state { get; set; } = Restaurant_Table_State_Enum.未使用; /// <summary> /// 包厢面积 /// </summary> public int area { get; set; } = 0; /// <summary> /// 容纳人数 /// </summary> public int num { get; set; } = 1; /// <summary> /// 排序 /// </summary> public int sort { get; set; } = 0; /// <summary> /// 是否有卫生间 /// </summary> public bool istoilet { get; set; } = false; /// <summary> /// 是否为贵宾区 /// </summary> public bool isvip { get; set; } = false; /// <summary> /// 餐桌添加时间 /// </summary> public DateTime addtime { get; set; } = DateTime.Now; /// <summary> /// 餐桌照片 /// </summary> public virtual ICollection<Entity.restaurant.Restaurant_Table_Image> Restaurant_Table_Image { get; set; } /// <summary> /// 餐桌类型 /// </summary> public enum Restaurant_Table_Type_Enum { 餐桌 = 0, 包厢 = 1 } /// <summary> /// 餐桌状态 /// </summary> public enum Restaurant_Table_State_Enum { /// <summary> /// 餐台未使用 /// </summary> 未使用 = 0, /// <summary> /// 餐台正在使用 /// </summary> 开台 = 1, /// <summary> /// 餐台已被预定 /// </summary> 预定 = 2 } }
子实体类:
[Table("Restaurant_Table_Image")] public class Restaurant_Table_Image { public string id { get; set; } /// <summary> /// 图片路径 /// </summary> public string url { get; set; } public DateTime addtime { get; set; } = DateTime.Now; /// <summary> /// 餐桌id /// </summary> public string tableid { get; set; } [ForeignKey("tableid")] public virtual Restaurant_Table_Base Restaurant_Table_Base { get; set; } }
在查询主表,并且JsonConvert.SerializeObject转换时会报错。
报错信息如下:
“Newtonsoft.Json.JsonSerializationException”类型的异常在 Newtonsoft.Json.dll 中发生,但未在用户代码中进行处理 其他信息: Self referencing loop detected for property 'Restaurant_Table_Base' with type 'System.Data.Entity.DynamicProxies.Restaurant_Table_Bas_441AC6ABF7582212F3AE79409B390A07C2AC928591385311FB0A6ADDFAFE5194'. Path 'data.data[0].Restaurant_Table_Image[0]'.
解决办法:
JsonConvert.SerializeObject(r, Formatting.Indented, new JsonSerializerSettings() { ReferenceLoopHandling = ReferenceLoopHandling.Ignore });
由于不懂英文,所以这个问题在网上找的,照葫芦画瓢,确实解决了我的问题。不明白是啥问题。哪位大神留言告诉下,谢谢。