C# 存储树形数据到数据库

前端传来的数据 :

[
    {
        "id":"005K",
        "label":"江苏省",
        "children":[
            {
                "id":"005L",
                "label":"淮安市",
                "children":[
                    {
                        "id":"005M",
                        "label":"淮阴区",
                        "children":[
                            {
                                "id":"005N",
                                "label":"码头镇",
                                "children":[

                                ]
                            },
                            {
                                "id":"005O",
                                "label":"王营镇",
                                "children":[

                                ]
                            }
                        ]
                    },
                    {
                        "id":"005P",
                        "label":"清江浦区",
                        "children":[
                            {
                                "id":"005Q",
                                "label":"和平镇",
                                "children":[

                                ]
                            },
                            {
                                "id":"005R",
                                "label":"武墩镇",
                                "children":[

                                ]
                            }
                        ]
                    }
                ]
            },
            {
                "id":"005S",
                "label":"苏州市",
                "children":[
                    {
                        "id":"005T",
                        "label":"姑苏区",
                        "children":[

                        ]
                    }
                ]
            },
            {
                "id":"005U",
                "label":"南通市",
                "children":[

                ]
            },
            {
                "id":"005V",
                "label":"新增节点",
                "children":[

                ]
            }
        ]
    },
    {
        "id":"005W",
        "label":"上海市",
        "children":[
            {
                "id":"005X",
                "label":"松江区",
                "children":[

                ]
            },
            {
                "id":"005Y",
                "label":"青浦区",
                "children":[

                ]
            },
            {
                "id":"005Z",
                "label":"浦东新区",
                "children":[

                ]
            },
            {
                "id":"0060",
                "label":"静安区",
                "children":[

                ]
            }
        ]
    },
    {
        "id":"0061",
        "label":"浙江省",
        "children":[
            {
                "id":"0062",
                "label":"杭州市",
                "children":[

                ]
            },
            {
                "id":"0063",
                "label":"绍兴市",
                "children":[

                ]
            }
        ]
    },
    {
        "id":"0064",
        "label":"山东省",
        "children":[

        ]
    }
]

代码部分:

public void Save(dynamic data)
        {
            List<TreeTerData> treeTerDataList = JsonConvert.DeserializeObject<List<TreeTerData>>(JsonConvert.SerializeObject(data));

            //保存之前删除掉之前这个FkCust的所有数据,重新保存
            string fkCust = ServiceBase.Get<LoginInfo>().CustCode;
            List<TerGroupModel> groupModelList = Da.GetModelList<TerGroupModel>(x => x.FkCust == fkCust).ToList();
            foreach (var gmodel in groupModelList)
            {
                Da.Delete(this.tb, this.pk, gmodel.Code);
            }


            //添加顶级节点和所有子节点
            foreach (TreeTerData item in treeTerDataList)
            {
               

                root = 0;
                string Code = BizBase.Get<BizAutoCode>().NextCode(this.tb, this.pk, 4);
                TerGroupModel model = new TerGroupModel();
                model.Code = Code;
                model.FkCust = ServiceBase.Get<LoginInfo>().CustCode;
                model.SName = item.label;
                model.NLeveType = Convert.ToString(root);
                Da.InsertModel<TerGroupModel>(model);
                
    
                saveTree(item.children, Code,root);

            }


        }





        /// <summary>
        /// 递归保存树型数据
        /// </summary>
        /// <param name="treeTer"></param>
        /// <param name="Code"></param>
        public void saveTree(List<TreeTerData> treeTer, string Code,int root)
        {

            List<TreeTerData> terDataList = new List<TreeTerData>();
            TerGroupModel model = new TerGroupModel();
            //root++;
            if (treeTer != null&& treeTer.Count > 0)
            {
                root++;
                model.SParentCode = Code;
                foreach (var item in treeTer)
                {

                    Code = BizBase.Get<BizAutoCode>().NextCode(this.tb, this.pk, 4);
                    model.Code = Code;
                    model.FkCust = ServiceBase.Get<LoginInfo>().CustCode;
                    model.SName = item.label;
                    model.NLeveType = Convert.ToString(root);
                    Da.InsertModel<TerGroupModel>(model);
                    
                    saveTree(item.children, Code, root);
                    //treeTer = item;
                }
               
            }

        }

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值