EF CodeFirst Newtonsoft.Json转换字符串报错
主实体类:
[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 });
由于不懂英文,所以这个问题在网上找的,照葫芦画瓢,确实解决了我的问题。不明白是啥问题。哪位大神留言告诉下,谢谢。
分类:
C#
, Entity Framework
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!