• 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# 控制反转(IOC: Inverse Of Control) & 依赖注入(DI: Independence Inject)
    英语常见短语汇总001
    ASP.Net Web.config 中引用外部config文件
    CSS样式汇总
    RSA非对称加密算法
    排序算法【2】——快速排序
    cmake引入boost
    boost之algorithm
    tar命令
    欧拉定理
  • 原文地址:https://www.cnblogs.com/OleRookie/p/5995807.html
Copyright © 2020-2023  润新知