问题标签 [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 投票
1 回答
925 浏览

c# - 链式方法调用中的自引用对象

您如何在同一方法的参数中引用链接方法的对象。假设您有许多链接方法调用来修剪/子串一个字符串,如下所示:

问题是,由于字符串的长度现在未知并且与原始字符串的长度不同,我如何像上次调用那样子字符串(索引和长度可能取决于字符串本身的子字符串)。

谢谢!

0 投票
1 回答
585 浏览

entity-framework - EF STE 和自引用表的问题

这是我在这里的第一篇文章,所以我希望一切都好。

这是我的问题:我的数据库中有一个名为UserTypes的表。它有:

  1. ID;
  2. 是私人的;
  3. 父ID;

相关的是第一个和第三个。我有另一个名为UserTypes_T的表,其中包含不同类型的信息,即特定于语言的信息。这些字段是:

  1. 语言_ID;
  2. 用户类型_ID;
  3. 姓名;

我想要实现的是从UserTypes表中加载整个层次结构并将其显示在 TreeView 中(这目前不相关)。然后,通过选择一些用户类型,我可以在单独的编辑框(名称)和组合框(父级)中编辑它们。

一切正常,直到我尝试将更改保留在数据库中。EF 为我生成了这些表的两个实体类:

用户类型的类有:

  1. ID;
  2. 是私人的;
  3. 父ID;
  4. 自引用的导航属性(0..1);
  5. 子元素的导航属性;
  6. UserTypes_T 表的另一个导航属性 (1..*);

翻译信息的类有:

  1. 用户类型_ID;
  2. 语言_ID;
  3. 姓名;
  4. UserTypes 表的导航属性 (*..1);
  5. 语言表的导航属性 (*..1);

我得到我需要使用的数据:

在我的 WCF Web 服务中。我可以毫无问题地添加新的用户类型,但是当我尝试更新旧的用户类型时,会发生一些奇怪的事情。

如果我更新根元素(Parent_ID==null)一切正常!如果我更新 Parent_ID!=null 的元素,我会收到以下错误:

AcceptChanges 无法继续,因为对象的键值与 ObjectStateManager 中的另一个对象冲突。

我在整个互联网上搜索并阅读了Diego B Vega(以及更多)的博客文章,但我的问题有所不同。当我更改父用户类型时,我实际上更改了 Parent_ID 属性,而不是导航属性。我总是尝试使用 ID,而不是生成的导航属性以避免出现问题。

我做了一些研究,试图看看我得到的对象图是什么,发现有很多重复的实体:

根元素有一个其子元素的列表。每个子元素都有一个对根或其父元素的反向引用,依此类推。你可以想象。由于我没有使用那些导航属性,因为我使用 ID 来获取/设置我需要的数据,所以我从模型中删除了它们。具体来说,我从UserTypes实体类中删除了第 4点和第 5点。然后我有一个每个元素只有一次的对象图。我尝试了一个新的更新,但我遇到了同样的问题:

根元素更新得很好,但是有一些父元素的元素抛出了同样的异常。

我看到我在UserTypes_T实体类中有一个导航属性,指向一个用户类型,所以我也删除了它。然后这个错误消失了。对象图中的所有项目都是唯一的。但是问题仍然存在 - 我可以毫无问题地更新我的根元素,但是当尝试更新子元素(没有排除)时,我在生成的 Model.Context.Extensions 类中得到了一个空引用异常:

我尝试仅更新名称(在UserTypes_T中),但错误是相同的。

我没有想法,我已经尝试解决这个问题 8 个小时了,所以如果有人给我想法或分享他们的经验,我将不胜感激。

PS:

我成功更新子对象的唯一方法是使用以下代码检索数据:

其中UserType1是导航属性,指向父用户类型,而UserTypes1是导航属性,包含子元素的列表。这里的问题是 EF “修复”对象并将Parent_ID更改为null。如果我再次设置它,EF 也会设置UserTypes1 ......也许有办法阻止这种行为?

0 投票
2 回答
189 浏览

sql - 具有双向自引用关联的类方法问题

我正在尝试创建一个应用程序,其中用户('current_user')对其他两个用户('user1'和'user2')之间的兼容性进行评分。他们可以对兼容性进行正面或负面评价:给两个用户评分“兼容”会创建两个相同类别的资源(一个“positive_connection”和一个“inverse_positive_connection” - 用于双向性),并且给他们评分“不兼容”也会创建两个资源('negative_connection '和'inverse_negative_connection')。所以有positive_connection、negative_connection和user的模型。

每个评级资源都属于创建它的用户,也属于它连接的用户。拥有正面和负面的评级很重要。

这是我的问题:在每个用户(@user)页面上,我想显示单独的列表:

  1. overall_positively_connected_to(@user)(即positive_connections.count > negative_ratings.count)的用户,并且

  2. overall_negatively_connected_to(@user)(即negative_connections.count > positive_ratings.count)的用户。


我似乎无法做的是编写一个方法,只提取那些被网络评为“兼容”或“不兼容”的用户

通过阅读 Michael Hartl 的 rails 教程(我对这一切完全陌生),我认为我需要在 User 模型中编写类似这样的内容:


编辑

从完全不了解 SQL 查询开始,我编写了这两个类方法来查找与@user 负相关和正相关的用户(分别):


但这并没有多大帮助。我需要的是一种获取用户的方法overall_positively_connected_to(user)。我认为该方法将涉及两个连接,并且是这样的:


但是在这里我完全卡住了:这显然是不对的。我在任何地方都找不到其他类似的例子......

任何关于这方面的帮助都会很棒,因为我对 SQL 查询一无所知。如果需要更多代码,请告诉我。提前致谢!

0 投票
1 回答
322 浏览

ruby-on-rails - 控制器计数关系中的自引用查找

为了在用户的“显示”页面上显示这些记录,我很难提取一组与用户自引用相关的记录。

这是想法:

用户 ( ) 对其他两个用户 (和)current_user之间的兼容性进行评分。他们可以对兼容性进行正面或负面评价:将两个用户评为“兼容”会在 user_a 和 user_b 之间创建 a,将他们评为“不兼容”会创建一个. 所以有positive_connection、negative_connection和user的模型。user_auser_bpositive_connectionnegative_connection

现在我只需要显示那些overall_positively_connected_to(@user)(即 where positive_connections_to(@user).count > negative_connections_to(@user).count).

这是我必须去的地方,但我不能再进一步了:

用户型号:

控制器

控制器中的代码显然是错误的,但我应该怎么做呢?我对rails(和sql)完全陌生,所以可能做了一些天真的事情。

任何帮助都会很棒。

0 投票
9 回答
177468 浏览

excel - 工作表函数中单元格、列和行的自引用

在 Excel 的工作表函数中,如何自引用所在的单元格、列或行?

0 投票
1 回答
1643 浏览

haskell - Haskell 函数中的自引用

我正在学习 Haskell,我在Haskell Wiki上的以下表达 真的让我感到困惑:

我不太明白为什么会这样。

如果我应用标准 Currying 逻辑(zipWith (+)),则返回一个将列表作为参数的函数,然后返回另一个将另一个列表作为参数的函数,并返回一个列表 ( zipWith::(a -> b -> c) -> [a] -> [b] -> [c])。因此,fibs是对列表(尚未评估)的引用,并且(tail fibs)是相同(未评估)列表的尾部。当我们尝试计算 ( take 10 fibs) 时,前两个元素绑定到01。换句话说fibs==[0,1,?,?...],和(tail fibs)==[1,?,?,?]。第一次加法完成fibs后就变成了[0,1,0+1,?,..]。同样,在第二次加法之后,我们得到[0,1,0+1,1+(0+1),?,?..]

  • 我的逻辑正确吗?
  • 有没有更简单的方法来解释这一点?(知道 Haskell 编译器对此代码做了什么的人的任何见解?)(欢迎链接和参考)
  • 确实这种类型的代码只是因为惰性求值才有效吗?
  • 当我这样做时会发生什么评估fibs !! 4
  • 这段代码是否假设 zipWith 从前到后处理元素?(我认为不应该,但我不明白为什么不)

EDIT2:我刚刚发现上面的问题在这里得到了很好的回答。如果我浪费了任何人的时间,我很抱歉。

编辑:这是一个更难理解的案例(来源:Project Euler 论坛):

请注意,all (\y -> x mod y /= 0)... 这里如何引用 x 不会导致无限递归?

0 投票
1 回答
11232 浏览

entity-framework - Entity Framework 4.1 Code First 自引用一对多和多对多关联

我有一个用户可以收集他喜欢的用户...

另一个用户可以拥有他喜欢的用户集合......

如果用户 A 喜欢用户 B,如果用户 B 喜欢用户 A,那么他们就可以出去玩。我需要互相发送他们的联系信息。我们如何在 Entity Framework Code First 中表示这样的模型?

这个模型正确吗?我不能让它工作。

我尝试了另一种方法,但这也不起作用......

我试图将用户集合添加到用户表中。

例如:

当我尝试添加用户和他们喜欢的人时出现此错误:

已检测到对关系“UserLike_LikeUser”的角色“UserLike_LikeUser_Target”的冲突更改。

代表这种模型的最佳方式是什么?

0 投票
3 回答
744 浏览

ruby-on-rails - Rails 自我参照 has_many :通过 - 我不知道我做错了什么,但这是不对的 :)

我正在尝试建立一个自我参照关系,如这段精彩的视频中所述 - http://railscasts.com/episodes/163-self-referential-association - 它主要是有效的,但并不完全有效。

我有这些实体: 用户,可以是导师或被指导者;匹配项,有一个mentor_id(user.id)、mentee_id(user.id)和status_id;和状态,这是一个简单的查找表。

我的用户模型如下所示:

我的状态模型如下所示:

我的 Match 模型如下所示:

当我放置 user.mentors时,我得到SQLite3::SQLException: no such column: matches.user_id: SELECT "users".* FROM "users" INNER JOIN "matches" ON "users".id = "matches".mentor_id WHERE ( (“匹配”.user_id = 1))

简单地说,我希望做user.matches.find(1).status.id .. 关于我做错了什么的任何想法?

提前致谢。乔恩

0 投票
1 回答
719 浏览

mysql - 如何使用 Propel ORM 在 Symfony 中构建自引用表

我在尝试使用 Propel ORM 从 symfony 项目中的现有数据库构建模型时出错。

错误是这样的:

build-propel.xml:474:20:双向定义外键a_table_on_my_schema_FK_1表示的1:1关系;Propel 目前不支持此功能(如果您必须同时拥有两个外键约束,请考虑使用自定义 SQL 文件添加此约束。)

schema.yml 文件非常广泛,但导致错误的表的描述(第一个未正确创建)是这样的:

我认为这个错误是因为自引用表。

我需要在许多元素之间实现一个不规则的关系,所以这个实现是一个很好的方法。但是导致我在施工时出现这个问题。

你能给我一些线索吗?有人有这个错误吗?你会怎么做?

谢谢你!!:D

0 投票
0 回答
424 浏览

ruby-on-rails-3 - Rails:从单个表单创建自引用模型的多个记录

我有一个自我参考的销售模式。销售对象可以表示“独立”的产品销售、产品集合的销售或集合内产品的销售:

set_sale_id 引用集合销售的父记录:

我想通过这样一个表单提交多个产品并设置销售额:

问题是如何以最佳方式使用 <%= f.fields_for ... %> 进行嵌套记录?

控制器端如何处理提交的记录?