代码之家  ›  专栏  ›  技术社区  ›  Taserface

实体框架中的一对多关系:为什么外键值为空?

  •  0
  • Taserface  · 技术社区  · 6 年前

    public class Company
    {
        [Key]
        public int companyID { get; set; }
        public string name { get; set; }
        // FOREIGN KEY One-To-Many relationship
        public ICollection<Photo> PhotoCollection { get; set; }
    }
    
    public class Photo
    {
        [Key]
        public int photoID { get; set; }
        public string path { get; set; }
    }
    

    我的数据库有一些记录,似乎是正确的。

    公司表格:

    CompanyID | Name
    ----------+---------------------
        1     | BestCompany
    

    PhotoID | Path       | CompanyID (foreign key)
    --------+------------+------------------------
        1   | photo1     |      1
        2   | photo2     |      1
    

    将company设置为变量很好,我可以设置为普通列(如companyID):

    var company = await _context.Company
                                .Where(p => p.companyName == "BestCompany")
                                .FirstOrDefaultAsync();
    

    不幸的是, photos

    List<Photo>photos = company.PhotoCollection;
    

    为什么它是空的?我做错什么了?

    我使用的是ASP.NET核心3和实体框架核心3.1.1。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Sailesh Babu Doppalapudi    6 年前

    您需要指定EF以包含子级。

    var company = await _context.Company.Where(p => p.companyName == "BestCompany").Include(p=> p.PhotoCollection).FirstOrDefaultAsync();