学习 CRUD 和 ASP.Net - 父级列出子级

问题描述 投票:0回答:1

如果之前有人问过这个问题,我深表歉意。我正在尝试研究,但我也不知道应该搜索什么,抱歉。所以我试图让父母和孩子在我的项目中联系在一起。我有的是这个:

public class ParentDb
{
  public int Id { get; set; }
  public string Title { get; set; }
  public string Description { get; set; }
}

public class ChildDb
{
  public int Id { get; set }
  public string FirstName { get; set; }
public string LastName { get; set; }
}

我想我应该做类似的事情:

public List<ChildDb> Children { get; set; }

我对如何做到这一点一无所知,因此当我使用控制器添加到我的 ChildDb 时,当我获得所有父母(和孩子)时,它也会添加到父母列表中。

再次抱歉,如果之前有人问过这个问题,或者我是个白痴。我正在尝试,但我只是不知道我在寻找什么。

mysql asp.net crud
1个回答
0
投票

要在实体框架中设置父子关系,请尝试以下操作:

  1. 定义模型:在

    ParentDb
    中添加集合,在
    ChildDb
    中添加外键。

    public class ParentDb
    {
        public int Id { get; set; }
        public List<ChildDb> Children { get; set; } = new List<ChildDb>();
    }
    
    public class ChildDb
    {
        public int Id { get; set; }
        public int ParentId { get; set; }
        public ParentDb Parent { get; set; }
    }
    
  2. 配置DbContext(可选,EF可以推断这一点):

    modelBuilder.Entity<ParentDb>()
        .HasMany(p => p.Children)
        .WithOne(c => c.Parent)
        .HasForeignKey(c => c.ParentId);
    
  3. 添加子级:设置

    ParentId
    并添加到父级的
    Children

    parent.Children.Add(child);
    _context.SaveChanges();
    
  4. 找回家长与孩子

    var parent = _context.Parents.Include(p => p.Children).FirstOrDefault(p => p.Id == parentId);
    

这应该有效地链接

ParentDb
ChildDb

© www.soinside.com 2019 - 2024. All rights reserved.