标签: self-referencing-table

具有多个父属性的EF6自引用表,单个子集合

我有一个引用自己的表,但我正在努力获得我想要的映射.我希望能够将儿童定义为拥有母亲,父亲和/或监护人的特定人的集合.守护者可能是父亲或母亲.

我希望能够看到人们被列入名单的人们可以浏览的树状图; 用户可以扩展一个人的节点以显示该人的所有孩子,而不管儿童定义的关系(母亲,父亲或监护人).

public partial class Person
{
    [Key]
    public int ID { get; set; }

    [StringLength(100)]
    public string Name { get; set; }


    public int? GuardianID { get; set; }

    [Column("MotherID")]
    public int? MotherID { get; set; }


    [Column("FatherID")]
    public int? FatherID { get; set; }

    [ForeignKey("MotherID")]
    public virtual tblPerson Mother { get; set; }

    [ForeignKey("FatherID")]
    public virtual tblPerson Father { get; set; }

    [ForeignKey("GuardianID")]
    public virtual tblPerson Guardian { get; set; }

    [InverseProperty("Guardian")]
    [InverseProperty("Father")]
    [InverseProperty("Mother")]
    public virtual IEnumerable<tblPerson> …
Run Code Online (Sandbox Code Playgroud)

entity-framework fluent data-annotations self-referencing-table

8
推荐指数
1
解决办法
683
查看次数

映射类别父ID自引用表结构到EF Core实体

数据库表:

图片

我尝试了这种方法将类别表映射到EF核心:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Category>(entity =>
    {
        entity
            .HasMany(e => e.Children)
            .WithOne(e => e.Parent) 
            .HasForeignKey(e => e.ParentId);
    });
}
Run Code Online (Sandbox Code Playgroud)

实体:

[Table("Category"]
public class Category : EntityBase
{
    [DataType(DataType.Text), MaxLength(50)]
    public string Name { get; set; }

    public int? ParentId { get; set; }

    public int? Order { get; set; }

    [ForeignKey("ParentId")]
    public virtual Category Parent { get; set; }

    public virtual ICollection<Category> Children { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后在存储库中:

public override IEnumerable<Category> GetAll()
{ 
    IEnumerable<Category> …
Run Code Online (Sandbox Code Playgroud)

c# sql categories self-referencing-table entity-framework-core

8
推荐指数
1
解决办法
5194
查看次数

如何有效地从自相关表中加载数据

考虑构建论坛App的以下要求

家长邮报

- Child Post1

    - Child Post1-1
    - Child Post1-2
        - Child Post1-2-1
- Child Post2
    - Child Post

- Child Post3
Run Code Online (Sandbox Code Playgroud)

表结构

tblPost -

  • 帖子ID
  • ChildPostId
  • 标题
  • 发布内容
  • 用户名

=====================

我可以使用递归CTE来检索这种数据.我不确定这是最好的方法.

问题

  • 使用SQL检索此数据的最佳方法是什么?

  • 有没有更好的方法使用ORM加载这些数据?

  • 如果我们使用SQL路由,将此数据加载到类中的最佳方法是什么,如下所示:

    public class Post {
      public int PostId {get;set;}
      public string PostTitle {get;set;}
      public string PostContent {get;set;}
      public string PostedBy {get;set;}
      public IEnumerable<Post> ChildPosts {get;set;}
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 显示这种数据如何使用剃刀语法进行视图?

collections razor asp.net-mvc-3 self-referencing-table

6
推荐指数
1
解决办法
3326
查看次数

如何为自引用表创建Hibernate映射

我被问到如何为表中引用表的主键的列创建hibernate映射.

例如,Employee表将EMP_ID作为主键,并且还具有MGR_ID列以了解员工的经理.由于经理也是员工,它将在同一个表中.因此,每个Employee行都有一个经理Id,它也是一个雇员.

  1. 我们如何为这个Employee类创建Hibernate映射?
  2. Employee类怎么样?它是否只有一个管理器ID,或者它将包含另一个Employee Object作为成员变量.

请帮助我解决这种情况.谢谢.

hibernate self-referencing-table

6
推荐指数
1
解决办法
5796
查看次数

如何在Hibernate中更改SQL执行的顺序

我正在尝试为有序孩子设计双向父子设计。

从父级中删除子级(例如3个子级中的第2个子级)时,hibernate生成的sql导致唯一约束冲突,因为在“删除”(目标)之前执行了“更新”(同级)。

我使用的RDBMS(H2)不支持延迟约束。除了以下内容,我还有哪些选择?

  • 从架构中删除唯一约束
  • 自己明确地管理排序,而不是依赖休眠

有什么办法可以让休眠生成在“更新”之前带有“删除”的sql吗?


在论坛中发现了一些旧的讨论:

删除然后在集合中插入-执行的SQL的顺序


数据库架构:

CREATE TABLE IF NOT EXISTS  Sequences (
ID                      BIGINT NOT NULL AUTO_INCREMENT,
Name                    LONGVARCHAR,
Type                    LONGVARCHAR,
Sequence                LONGVARCHAR,

ParentId                BIGINT DEFAULT NULL,
Index                   INT,

CONSTRAINT pk_SequenceId    PRIMARY KEY     (ID),
CONSTRAINT uc_Sequences     UNIQUE          (ParentId, Index),
CONSTRAINT fk_Sequences
    FOREIGN KEY (ParentId) 
    REFERENCES Sequences(ID) 
        ON UPDATE CASCADE
        ON DELETE CASCADE
);
Run Code Online (Sandbox Code Playgroud)

类:

public class Sequence {
    protected Long ID;
    protected String name;
    protected String type;
    protected String sequence;
    protected Sequence  parentSequence;
    protected List<Sequence> childSequences …
Run Code Online (Sandbox Code Playgroud)

java sql hibernate unique-constraint self-referencing-table

5
推荐指数
1
解决办法
3673
查看次数

ON DELETE在自引用关系上设置NULL

我有primary key一个foreign key参考表和一个表same table primary key.即在同一张桌子上有父母和孩子.在sql sever中,删除规则有三个选项.但是只能设置"NO ACTION"删除规则.我知道不可能"cascade" delete因为周期和链接而设置.但为什么不允许其他选择呢?特别是那"SET NULL"一个.

现在我必须手动完成此操作.我必须找到子记录并将外键设置为null.之后我可以删除父母.为什么不能为它设置规则?

sql sql-server foreign-keys self-referencing-table

5
推荐指数
1
解决办法
917
查看次数

在Django中反向自引用外键

对不起,如果这是一个愚蠢的问题,但我有点像Django新手,无法找到答案.

我有一个带有自引用字段的Order模型:

source = models.ForeignKey(
    'self',
    help_text = "[redacted]",
    verbose_name = "Source Order",
    blank = True,
    null = True,
)
Run Code Online (Sandbox Code Playgroud)

虽然如果我有一个订单并且我想知道它的来源,这可以正常工作,我还需要获得一个订单的"子"列表 - 也就是这个订单作为源的订单列表.这需要通过filter()s 完成还是有一个很好的,Django-y方式来做到这一点?

python database django self-referencing-table

4
推荐指数
1
解决办法
1321
查看次数

如何在ng-table中定义一个过滤器框?

我按照http://bazalt-cms.com/ng-table/example/4的内容在ng-table中创建了一个过滤盒

我的代码与示例相同:在html中创建过滤器:

<table ng-table="tableParams" show-filter="true" class="table">
    <tr ng-repeat="user in $data">
        <td data-title="'Name'" filter="{ 'name': 'text' }">
Run Code Online (Sandbox Code Playgroud)

现在我们可以看到布局:

在此输入图像描述

但是我不想在表格中使用过滤器框,如下所示:

在此输入图像描述

文件管理器在表格上方是我的过滤器框的代码:

<input type="text" ng-model="filter.name" />
<table ng-table="tableParams" show-filter="false" class="table">
    <tr ng-repeat="user in $data">
        <td data-title="'Name'" filter="{ 'name': 'text' }">
            {{user.name}}
        </td>
Run Code Online (Sandbox Code Playgroud)

...使用ng-model ="filter.name"来绑定,但它不起作用......

有没有办法实现我的想象力?

javascript self-referencing-table angularjs ngtable

4
推荐指数
1
解决办法
3810
查看次数

Entity Framework Core 中的自引用/父子关系一对零或一对一

我想在 Entity Framework Core 中创建一对零或一对一的引用/父子关系。我的意思是我的实体可以有一个父级:

public class MyEntity
{
    public Guid Id { get; set; }

    public Guid? ParentEntityId { get; set; }
    public MyEntity ParentEntity { get; set; }

    public MyEntity ChildEntity { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试通过 Fluent api 配置它:

entity.HasOne(x => x.ParentEntity)
    .WithOne(x => x.ChildEntity)
    .HasForeignKey( .... )
Run Code Online (Sandbox Code Playgroud)

我不明白我必须在最后一行写什么。我也不确定我的实体是否正确。

有人可以帮我吗?

编辑:这个问题不能解决我的问题:实体框架中的自引用/父子关系 我的问题是关于创建外键。此行不起作用:

.HasForeignKey(x => x.ParentEntityId)
Run Code Online (Sandbox Code Playgroud)

HasForeignKey需要输入一个字符串。

one-to-one self-referencing-table entity-framework-core

4
推荐指数
1
解决办法
2918
查看次数

Entity Framework Core 一对一自引用关系失败

在构建迁移时,我收到以下错误:

无法确定由“Location”类型的导航属性“Location.NorthLocation”表示的关系。手动配置关系,或从模型中忽略此属性。

位置实体:

public class Location
{
    public Guid Id { get; set; }

    public DateTime CreatedWhen { get; set; }
    public string CreatedBy { get; set; }
    public DateTime ModifiedWhen { get; set; }
    public string ModifiedBy { get; set; }

    public Guid? NorthLocationId { get; set; }
    public virtual Location NorthLocation { get; set; }

    public Guid? SouthLocationId { get; set; }
    public virtual Location SouthLocation { get; set; }

    public Guid? EastLocationId { get; set; }
    public …
Run Code Online (Sandbox Code Playgroud)

entity-relationship entity-framework one-to-one self-referencing-table entity-framework-core

3
推荐指数
1
解决办法
4106
查看次数

Entity Framework Core 3.0 - 创建自引用多对多关系

所以这是我的问题......我试图创建的是一种自我引用的多对多关系。基本上这是我的模型。

public class InformationSystem
{
  public InformationSystem()
  {
     Systems = new HashSet<InformationSystem>();
     ParentSystems = new HashSet<InformationSystem>();
  }
 [Key()]
 public int InformationSystemID { get; set; }
 public string InformationSystemName { get; set; }
 //Navigation properties
 public virtual ICollection<InformationSystem> Systems { get; set; }
 public virtual ICollection<InformationSystem> ParentSystems { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这个想法是,一个系统可以有许多父母,而一个父母可以有许多孩子。我知道如何创建一个自引用实体,其中许多孩子可以有一个父母。让我困惑的是多对多的部分。下面是我的 DbContext。

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
  modelBuilder.Entity<InformationSystem>(entity =>
  {
    entity
       .HasMany(e => e.ParentSystems)
       .WithMany(e => e.Systems)
       .OnDelete(DeleteBehavior.Restrict);
  });
Run Code Online (Sandbox Code Playgroud)

然而,在我的 DbContext 上,我收到一个错误,即 .WithMany 不包含 with Many 的定义,该定义将接受类型集合的输入。我知道,当代码首先创建迁移并更新数据库时,基本上需要构建的是链接表。我认为链接表有两列,没有键。一列是 InformationSystemID,一列是 …

c# many-to-many self-referencing-table entity-framework-core

3
推荐指数
1
解决办法
3764
查看次数

如何构建自引用/递归 SQLModel

我想定义一个具有自引用(或递归)外键的模型,使用SQLModel. (这种关系模式有时也称为邻接列表。)纯实现在SQLAlchemy其文档中进行了描述。

假设我想实现上面链接的示例中描述的基本树结构SQLAlchemy,其中我有一个Node模型,每个实例都有一个id主键、一个data字段(例如 type str)和对另一个实例的可选引用(读取外键)我们称之为其父节点(字段名称parent_id)的节点。

理想情况下,每个Node对象都应该有一个属性,如果该节点没有父节点,则该属性parent将为;None否则它将包含(指向)父Node对象的指针。

更好的是,每个Node对象都应该有一个属性,该属性是将其作为父对象引用的对象children列表。Node

问题是双重的:

  1. 实现这个的优雅方法是什么SQLModel?

  2. 我如何创建这样的节点实例并将它们插入数据库?

python sqlalchemy adjacency-list self-referencing-table sqlmodel

3
推荐指数
1
解决办法
1388
查看次数

自引用表 SQL 查询

我有四列的表格 id, name, designation, manager_id.

表架构:

CREATE TABLE "Employee_Information" 
(
    "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
    "name" varchar, 
    "designation" varchar, 
    "manager_id" integer references employee_information(id)
);
Run Code Online (Sandbox Code Playgroud)

如下

ID  Name    Designation   Manager_id
-------------------------------------
1   Raja    CEO 
2   Mani    CTO           1
3   Kavi    COO           1
4   Murugan Head          3
5   Alpha   Head(Fin)     4
7   Kannan  Head          4
Run Code Online (Sandbox Code Playgroud)

员工层级如下:

Raja CEO
    Mani CTO
    Kavi COO
               Murugan Head
                       Alpha Head(Fin)
                           Kannan Head 
       Beta CFO
       Delta Head 
Run Code Online (Sandbox Code Playgroud)

我想要一个 SQL 查询来显示特定员工的所有可能的经理。他的 Juniors 或其他下级员工姓名不应出现在结果集中。

显示同级别或更高级别的所有其他员工。

我无法为此找到解决方案。

sql database sqlite join self-referencing-table

2
推荐指数
1
解决办法
1万
查看次数