问题标签 [hierarchy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
207 浏览

resources - Exchange Server 组织结构

我需要找出一种方法来通过交换服务器的 Director->Manager->Employee 构建层次结构。我对交流的了解非常有限,所以有人对我有什么想法吗?

谢谢

0 投票
4 回答
7570 浏览

sql-server-2005 - SQL 2005 中递归查询结果的排序层次结构

我有一个包含以下列的“任务”表(TaskOrder 用于在父级范围内对子级进行排序,而不是整个表):

我有这个 CTE 查询来返回所有行:

此查询返回您所期望的按级别排序的所有任务。如何更改它以将结果排序为如下的层次顺序?

谢谢。

编辑:答案应该适用于无限数量的级别。

0 投票
1 回答
1648 浏览

.net - 为什么我的 Linq to Entities 代码重复行?

我正在使用 ADO.NET Entity Framework 来管理对象的层次结构。每个人都有一个单亲和零个或多个孩子。

ADO.NET 实体框架对象与父和子 http://img14.imageshack.us/img14/7158/thingpi1.gif

我在我的 WPF 应用程序中使用 TreeView 控件呈现这些。只需单击一个按钮,即可将新事物作为子项添加到所选事物中...

视觉基本...

但是,有一个问题。它不是简单地将新事物添加到数据库中,而是首先添加父事物的副本,但奇怪的是,ID 的唯一标识符为空。

这会使数据库变得混乱,并在第二次单击按钮 ButtonAddThing 后引发以下异常。

例外:“违反主键约束‘PK_Thing’。无法在对象‘dbo.Thing’中插入重复键。语句已终止。”

这些是生成的 T-SQL 插入语句...

父副本:

新事物:

为什么我的 Linq to Entities 代码会重复这些父行?如何正确处理这种父/子关系?


更新:这不仅仅是创建新事物时的问题。我的“删除”按钮也不能正常工作。

也不

我在调试应用程序时正在监视 SQL Server Profiler。观察到的行为:

  1. 第一个按钮单击删除就好了。
  2. 第二个按钮单击插入一个重复的父项(空 GUID 唯一标识符主键),然后执行删除。
  3. 第三个按钮单击失败(违反 PRIMARY KEY 约束),因为它无法插入具有空 GUID 主键的第二个事物。
0 投票
3 回答
3582 浏览

data-structures - 在 TreeView 节点上存储数据的最佳方式是什么?

TreeView 是一种向用户展示层次结构的好方法,但想象以下场景,层次结构如下所示:

当用户单击支付节点时,您需要在其中插入数据库。本质上,插入所需的变量是 Building_Id、Tenant_Id、Payment_Id。组装这些的一种方法是走到每个节点的父节点:

以以下格式将所有 id 的值存储在支付节点上,然后解析 Building_Id、Tenant_Id、Payment_Id 的值是否更好?例如:

0 投票
1 回答
268 浏览

internationalization - 如何维护用 Sphinx 编写的文档集的多个翻译?

我正在开始一个个人项目,我想为我的法语研究员以及说英语的其他人提供文档。

那么我应该如何组织我的目录呢?

要分离什么(我猜来源,一些配置项,如生成导航链接的语言......)?

什么不分开(最多配置项避免重复)?

0 投票
5 回答
8243 浏览

oop - 命名子类的最佳实践

我经常处于这样一种情况,即我有一个由接口或类表示的概念,然后我有一系列扩展它的子类/子接口。

例如: 一个通用的“DoiGraphNode” 一个代表资源的“DoiGraphNode” 一个代表 Java 资源的“DoiGraphNode” 一个带有关联路径的“DoiGraphNode”,等等等等。

我可以想到三种命名约定,并希望对如何选择提出意见。


选项 1:始终以概念名称开头。

因此:DoiGraphNode、DoiGraphNodeResource、DoiGraphNodeJavaResource、DoiGraphNodeWithPath 等。

Pro:很清楚我在处理什么,很容易看到我拥有的所有选项

骗子:不是很自然?一切看起来都一样?


选项2:把特殊的东西放在开头。

因此:DoiGraphNode、ResourceDoiGraphNode、JavaResourceDoiGraphNode、PathBaseDoiGraphNode 等等等等。

亲:看到代码就很清楚了

缺点:找到它可能很困难,特别是如果我不记得名字,缺乏视觉一致性


选项 3:放置特殊内容并删除一些多余的文本

因此:DoiGraphNode、ResourceNode、JavaResourceNode、GraphNodeWithPath

优点:写和读的不多 缺点:看起来像 cr*p,非常不一致,可能与其他名称冲突

0 投票
2 回答
301 浏览

php - 将嵌套讨论分隔在多个页面上的最佳方法是什么 - 对于 Web 应用程序?

我正在为 PHP/MySQL 应用程序设计一个线程消息显示——比如 Slashdot 或 Youtube 上的评论——我想知道我应该如何对评论进行排序并将其分成页面,这样你就可以在一个页面上有 20 条评论但仍然让它们嵌套。

我的应用程序中的评论可以嵌套无限级别,并且此结构使用我认为的邻接关系表表示,这是一个单独的表,其中包含具有任何升序/降序关系的每一对的一行。该关系表具有 CHILDID、PARENTID 和 LEVEL,其中级别 2 表示“曾祖父母”,依此类推。

我的问题是最终用户的可用性和构建高效数据库查询的实用性之一。我考虑了这些选项:

  • 无论在树中的位置如何,按日期将结果拆分为页面,以便特定日期范围内的所有评论将一起出现,即使它们没有与父母一起出现。任何在同一时间发布到其父级的评论都将出现在同一页面上,在这种情况下,我们可以将它们显示为“嵌套”,但会有来自其父级的孤立评论。这可能是可以接受的 - 这是 YouTube 评论中的处理方式 - 比其父级晚得多的评论不会与其父级出现在同一页面上(如果父级不在最新页面上),而是出现其他最新评论。

  • 像遍历树一样按顺序检索节点。尽管兄弟姐妹仍然可以按日期排序,但这会优先考虑树结构而不是日期。这样做的好处是,即使该父级是最近评论的数页,回复总是与他们的父级(他们要回复的评论)一起放置。这就是 icanhascheezburger 博客等应用程序的处理方式。我不喜欢它的一些事情,比如每个人都想对最大的树枝添加回复的方式。

  • 第三种选择是像 Slashdot 那样做,它不会将评论分成页面,而是有一棵大树 - 为了保持页面大小可管理,它开始剔除低评级的评论。

我认为第一个是给定我的关系表的最简单的数据库查询,但对其他想法持开放态度。

所有这三种系统中的一些这样的系统以某种方式限制了嵌套级别——这很容易做到,一旦我们递归了 X 级别,其他所有东西都可以组合在一起,就好像它们是兄弟姐妹一样。例如,YouTube 评论只呈现到一个级别。其他系统有时会在 5 个左右的级别后说“超出嵌套级别”。

0 投票
1 回答
8117 浏览

sql - CTE 遍历备份层次结构?

我可以在分层数据模型中找到给定记录的所有子项(请参见下面的代码),但我不确定如何使用给定的子 ID 遍历父/子链。谁能指出我正确的方向来弄清楚如何做到这一点?这在 Linq to SQL 中也可能吗?

0 投票
1 回答
5871 浏览

linq-to-sql - TreeView,Linq-To-SQL 递归数据填充

我有一个 IEnumerable(of Employee) 与自身的 ParentID/ChildID 关系,我可以将其数据绑定到 TreeView 并完美地填充层次结构。但是,我希望能够手动循环遍历所有记录并以编程方式创建所有节点,以便我可以根据给定项目/无的数据更改每个节点的属性。

有没有解释如何做到这一点的教程?我见过很多使用数据集和数据表的,但没有一个显示如何在 Linq to SQL (IEnumerable) 中做到这一点

更新:

这是我过去使用 DataSet 的方法 - 我似乎无法找到如何使用 IEnumerable 来做同样的事情。

0 投票
3 回答
1245 浏览

sql - 与 LINQ2SQL 和 POCO 对象的父子关系

我刚开始学习 LINQ2SQL,我想尝试的第一件事是简单的父子层次结构,但我似乎找不到一个好的方法。我在 SO 上看到了一些示例,我已经用谷歌搜索了,但我无法直接应用它们,所以我将准确解释我想要完成的工作。

让我们使用带有标签的常见示例。

数据库表:Post-- Post_Tags -- 标签

我创建了一个简单的 Post 类,因此我避免传递 Linq2Sql 类:

我想从 Posts 表中选择 5 条最新记录,获取它们的相关标签并返回 IList,其中每个 Post 都填充了 Tags 属性。

你能给我看一个具体的 Linq2Sql 代码吗?

我试过了:

这可行,但会复制每个 Tag 记录的 Post 记录,并且我必须在我使用的每个方法中复制属性映射 (Id=p.Id, ...)。然后我尝试了这种方法,但在这种情况下,我对每个标签都有一个到 DB 的往返:

如果我在经典 ADO.NET 中执行此操作,我将创建一个返回两个结果集的存储过程。一个带有 Post 记录,第二个带有相关的 Tag 记录。然后我会将它们映射到代码中(手动、DataRelation、ORM 等)。我可以对 LINQ2SQL 做同样的事情吗?

我真的很想看到一些关于你们如何处理如此简单的层次结构的代码示例。

是的,我真的很想返回 IList<> 对象和我的自定义类,而不是可查询的 Linq 到 Sql 对象,因为如果我决定放弃 Linq2Sql,我希望对数据访问代码保持灵活。

谢谢。