问题标签 [self-reference]

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 投票
3 回答
2292 浏览

python - 自引用列表的使用

我知道可以用 Python 等语言创建自引用列表:

哪些算法受益于自引用列表?我想不出一个。

谢谢。

0 投票
3 回答
2011 浏览

entity-framework - 实体框架自引用多对多与有效负载(物料清单 BOM)

不久前我问了这个问题而没有答案,我相信这可能是 EF 最奇怪的实现,尽管它非常实用。这是我以前的帖子:

实体框架自引用分层多对多

我决定用额外的关键字 Payload 和更清晰的理解再次询问。

在 Apress 出版物中:Entity Framework 4.0 Recipes: A Problem-Solution Approach,第 2-6 页的配方。26 题为使用有效负载建模多对多关系。配方 2-7 的标题是为自指关系建模。

阅读这将为您提供我的问题的基础,不同之处在于我有一个带有有效负载的自我参照多对多,据我所知,这本书或宇宙中的任何地方都没有讨论过。

简单地说,我有一个包含 ID 和类型字段的资源表。我还有一个 ResourceHierarchy 表,它用作联结表或桥表,因为它有一个由 Parent_ID 和 Child_ID 组成的复合主键和一个复合外键。因此,资源实体可以用作子资源或父资源或两者兼而有之。

到目前为止,实体框架将生成资源实体,但 ResourceHierarchy 实体实际上对 EDMX 设计器是隐藏的,因为在 EDMX 文件中,它仅被视为关系而不是实体。

生成的资源实体将具有诸如 Resources 和 Resources1 之类的导航属性,我将其重命名为 Parent 和 Children。

所以我可以写这样的代码:(它没有做任何事情我只是展示一些例子)

假设我有一个由其他两个资源共享的资源。另外两个资源将是所述资源的父母。所述资源也是其每个父母的唯一孩子。是的,一个资源可以有三个或更多“父母”,如果你愿意,甚至可以有两个父亲,但祖先会共享一个孩子吗?不在我的手表上。所以无论如何......我们必须从现实世界的场景中考虑这一点,以便从这一点开始有意义。

这是一些让我们开始的代码:

所以我们有两个有螺丝的小部件。WidgetA 和 WidgetB 在网站上列为产品。如果 WidgetA 卖了,WidgetB 的螺丝钉会怎样?所以现在您看到我们需要资源实体上的 Quantity 属性。

快进好几个月了,我目前正在我的项目中,并在意识到 EF 有多么有限后假设胎儿位置。

这部分变得有点复杂。如果

我们如何知道或设置它,以便我们可以将孩子的 2 个分配给 parent1,将孩子的 2 个分配给 parent2?

这只能通过向 ResourceHierarchy 表添加另一个数量(int)列来完成,我们将其称为“必需”,因此它看起来像:

因此,我们已将有效负载附加到 db 中的 ResourceHierarchy 实体。如果我们从 EDMX 设计器重新生成模型,ResourceHierarchy 不再是关系,而是现在是实体。如果我选择仅从 EDMX 设计器刷新 ResourceHierarchy 表,我可以在存储模型中看到 Required 属性,但它不在概念模型或映射模型中的任何位置,因为 ResourceHierarchy 将是一种关系。但是,如果我删除 Resource 表和 ResourceHierarchy 表并重新生成它们,则 ResourceHierarchy 表现在在Required 列中可见并且它现在是一个实体。

可以使用此设置,但它比简单地访问 ResourceHierarchy 关系和检索所需属性要困难得多。即使 ResourceHierarchy EntityType 在存储模型中包含Required 属性,在访问AssociationSet 后,我​​也无法从代码中访问Required 属性。如果 ResourceHierarchy 表是 EF 中的关系,则它在存储模型中看起来像这样。

如果我尝试合并生成的 EDMX 文件,我会收到错误消息,告诉我 ResourceHierarchy 可以是实体或关系,但不能同时是两者。

这称为带有有效负载的多对多。尝试使用自引用层次结构来实现这一点在 EF 中是一场噩梦。我正在使用 VS2010、SQL 2008 和 .NET 4.0 框架。

这个概念是我希望拥有由资源组成的产品,这些资源本身由其他资源组成或用于组成其他资源,并且每个产品都需要一定数量的资源。它基本上是物料清单 BOM。EF 不支持 BOM 模型吗?

SQL Server 2008 中的新 HIERARCHYID 功能是否会有所帮助?

0 投票
1 回答
386 浏览

linq-to-entities - LINQ to Entity 问题。自引用实体

我有一个自引用实体(0 到 *)。当我试图删除一个时,出现错误。

数据结构如下:

服务1——服务1.1——服务
1.2——服务
1.2.1——服务 1.2.2—— 服务 1.2.3——服务 1.3——服务1.4 服务2






等等...

我只需要删除所有子服务(级联)的服务之一。

请帮我!)

0 投票
0 回答
333 浏览

ruby-on-rails - 对于具有空自引用关联的模型,rails 渲染动作两次

我对这个很困惑。我怀疑任何人都可以立即告诉我问题是什么,但是任何建议调试和调查方法的答案都将不胜感激——我已经尝试将一些调试调用放入控制器中,但在遵循路径时运气不佳通过 Rails 的胆量,因此指向要调查的源代码的位置会很棒。

这发生在 Ruby 1.8.7/Rails 2.3.5 和 Ruby 1.9.2/Rails 3.0.1 下。

我有以下模型:

使用以下路线:

还有一些验证可以确保这些嵌套不能超过一层——即,集合可以有父集合,也可以有子集合,而不是两者兼而有之。

如果一个集合没有子集合——即它是一个子集合或者它是一个独立的集合——那么该集合下的任何动作都会渲染两次。换句话说:

为带有孩子的集合重新加载一次显示页面:

为没有孩子的集合重新加载一次显示页面:

所有其他嵌套资源(其中有很多)都会发生同样的事情——例如 /collections/[collection name]/profile、/collections/[collection name]/works、/collections/[collection name]/people -- 如果集合有子集合,则所有动作都呈现一次并返回。否则,它们会渲染两次。

注意——浏览器显示第一次渲染的结果,但浏览器状态栏仍然显示“等待”直到第二次渲染完成,但它不会重绘屏幕,至少在 Firefox 或 Safari 中是这样。

我创建了一个具有相同结构的测试应用程序(为模型使用相同的名称“集合”,以防这是不稳定的来源),并且错误不会重复。

就像我上面说的——任何想法,甚至如何调试它都将不胜感激。

0 投票
1 回答
3550 浏览

many-to-many - sqlalchemy中的多对多自引用关系

我试图在 sqlalchemy 中建立一个自我引用的多对多关系(这意味着 Line 可以有许多父行和许多子行),如下所示:

但我收到以下错误:sqlalchemy.exc.ArgumentError:无法确定关系 Line.next_lines 上父/子表之间的连接条件。指定一个“primaryjoin”表达式。如果存在“secondary”,则还需要“secondaryjoin”。

你知道我该如何补救吗?

0 投票
2 回答
1585 浏览

ruby-on-rails - Mongoid 自引用连接

我目前正在开发一个小型 Rails 3 应用程序,以帮助跟踪工作中的秘密圣诞老人。我几乎完成了并且完全难以解决最后一个问题。

我有一个Participantmongoid文档,需要一个自加入来代表谁必须为谁买礼物。无论我做什么,我似乎都无法让它发挥作用。我的代码如下:

使用 rails 控制台,如果我设置任何一个属性,它永远不会反映在连接的另一侧,有时在保存和重新加载后会一起丢失。我敢肯定,答案让我眼前一亮——但经过数小时的凝视,我仍然看不到它。

0 投票
2 回答
454 浏览

model-view-controller - 帮助 Rails 3 中的自引用模型和视图

我有一个简单的客户端表(或模型),其中客户端可以有一个父客户端(只有一个,或者没有)。我是这样建模的:

这似乎工作正常。我有两个问题:

  1. 这是在 R3 模型中表示这种关系的正确原因吗?
  2. _form.html.erb 应该是什么样的?例如,我想要一个下拉框,列出所有可能的客户端(和无)作为父字段。
0 投票
2 回答
1911 浏览

iphone - 核心数据:自引用表

我的核心数据模型中有一个实体,其中包含对自身的引用。即一个页面可以有一个子页面集合。编译时我收到警告:

“Page.pages - 多对多关系没有反向:这是一个高级设置(没有对象可以在特定关系的多个目标中)”

现在我已经读到核心数据需要一个反向关系来保持完整性,并希望提供这个。我不介意我的数据模型被更改,这是开发的早期阶段。处理这种情况的适当方法是什么?

替代文字

0 投票
1 回答
584 浏览

ruby-on-rails - 破坏自我参照关联双方的最佳方法是什么?

在我的项目中,我有一个自引用关联。

我有一个用户模型:

和一个关系模型:

当两个用户彼此对等时,数据库中显然有两条记录。

当一个用户选择结束一段关系时,我希望这会破坏两条记录 - 而不仅仅是关系的一侧。

有没有更好的方法来执行此操作,而不是在控制器中加载关系两次(关系的每一侧一次)?

0 投票
1 回答
1095 浏览

hibernate - JSP/Struts2/Hibernate:循环自引用表

假设我们有一个名为 PERSON 的自引用表,其中包含以下列:ID、PARENT,其中 PARENT 是 PERSON 表中另一个元素的 ID 列的外键。当然,许多人可以有相同的父母。

我在延迟获取模式下使用 Hibernate 3 来处理数据库。Hibernate 从数据库中获取一个person元素,然后通过 Struts2 操作将其放入 ValueStack 中,以在结果 JSP 页面上使用。

现在的问题是:在JSP 中,我怎样才能显示这个person元素的所有child(以及child 的child,等等,像家谱一样) ?

当然,对于 n+1 个孩子,我可以在 person.person 上使用 <s:iterator> 标签。我还可以在 person.person.person 上嵌套另一个 < s:iterator> 标签来获得 n+2 个孩子。

但是,如果我想以自动方式执行此操作,直到最后一个 n+p 子元素,在此过程中显示所有 n+1..n+p 元素的所有子元素,该怎么办?

我希望我已经足够清楚了。谢谢大家的时间。

——待定。