【问题标题】:How to generate MSSQL Hierarchy ID for each element for a tree object如何为树对象的每个元素生成 MSSQL 层次结构 ID
【发布时间】:2014-09-15 20:21:18
【问题描述】:

我的项目中有一个像可拖动树这样的要求。 我已成功将 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 天没有运气)

【问题讨论】:

  • 为什么需要pos 属性,您的id 值似乎为您提供了层次结构?
  • id 仅随机生成@Tony,没有深度限制..@Malk 谢谢。我在 UI 中使用 jimliu.github.io/angular-ui-tree
  • 您说您已经“..成功地将 mssql 结果集转换为 json”,所以请显示您用于将树存储在数据库中的表结构(具有相同的示例数据);没有它,很难说最好的方法是什么。
  • 我使用stackoverflow.com/questions/6945216/…将mssql转换为c# json

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


【解决方案1】:

按照您发布到另一个 SO 问题的链接,然后是评论中的链接,我看到您正在使用 MSSQL hierarchyid 数据类型(提示:如果您在你的问题;)

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

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

【讨论】:

  • 谢谢托尼,我希望这个解决方案能奏效。请给我任何提示或示例代码以通过遍历 linq 生成层次结构 id
  • @sathishkumar - 不幸的是 LINQ 不是我的强项,但快速搜索发现了 json.net 库,它可能会帮助您将层次结构解析为 C# 对象(如果这对您来说更容易编码) . SO问题Can I LINQ a JSON的答案推荐同一个库。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-19
  • 1970-01-01
  • 2021-12-22
  • 1970-01-01
  • 1970-01-01
  • 2021-08-24
  • 1970-01-01
相关资源
最近更新 更多