如何为树对象的每个元素生成MSSQL层次结构ID

时间:2014-09-15 20:21:18

标签: c# sql-server tree hierarchical-data

我的项目中有像可拖动树这样的要求。 我已成功将mssql结果集转换为json。

但最终用户再次拖放并完全改变了树结构。 现在我从客户端获得了以下json。

[
  {
    "id": 1,
    "title": "1. dragon-breath",
    "items": [
      {
        "id": 10,
        "title": "1. dragon-breath.1",
        "items": [
          {
            "id": 100,
            "title": "1. dragon-breath.1.2",
            "items": [
              {
                "id": 1000,
                "title": "1. dragon-breath.1.2.3",
                "items": [],
                "pos": 3
              }
            ],
            "pos": 2
          },
          {
            "id": 101,
            "title": "1. dragon-breath.1.2",
            "items": [],
            "pos": 2
          }
        ],
        "pos": 1
      }
    ],
    "pos": 1
  },
  {
    "id": 102,
    "title": "1. dragon-breath.1.2",
    "items": [
      {
        "id": 1020,
        "title": "1. dragon-breath.1.2.1",
        "items": [],
        "pos": 1
      }
    ],
    "pos": 2
  },
  {
    "id": 1021,
    "title": "1. dragon-breath.1.2.1",
    "items": [],
    "pos": 1
  }
]

从上面的json“pos”属性是MSSQL Hierarchyid值。

当我从客户端发回这个json时,我正在尝试重新生成每个元素的层次结构ID。

我要求你们帮助我。 (花2天没运气)

1 个答案:

答案 0 :(得分:0)

在您发布到另一个SO问题的链接,然后是评论的链接之后,我看到您正在使用MSSQL hierarchyid数据类型(提示:如果您对此更清楚一点,它可能会有所帮助在你的问题;)

从在线帮助中我看到有一个Parse函数,它带有一个字符串。

因此,您需要遍历JSON树结构,例如为/1/1/3/形式的每个元素构建字符串,并将这些字符串与关联的节点id一起传递回数据库。