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 });

 由于不懂英文,所以这个问题在网上找的,照葫芦画瓢,确实解决了我的问题。不明白是啥问题。哪位大神留言告诉下,谢谢。

posted @   鞍山老菜鸟  阅读(931)  评论(0编辑  收藏  举报
编辑推荐:
· 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框架的用法!
点击右上角即可分享
微信分享提示