首页 > 解决方案 > EF Core 使用对象内部对象和 FK 查询 DTO

问题描述

我有 BookDTO 类和 Book 类

有一个属性 Reviewer 和 FK Reviewer

public class BookDTO
    {
        [ForeignKey("Reviewers")]
        public Reviewers Reviewer { get; set;}
        public string Id { get; set; }
        public string Description { get; set; }
}


  public class Book
    {
        public Book()
        {
            Authors = new List<BookAuthor>();
        }
        [ForeignKey("Reviewers")]
        public Reviewers Reviewer { get; set;}
        public string Id { get; set; }
        public string Description { get; set; }

        public List<BookAuthor> Authors { get; set; }
}

    }

Reviewer 类内部有另一个对象,称为 Grade

 public class Reviewer
    {
        public string Id { get; set; }
        public string Name { get; set; }
        
        public Grade Grade ( get; set; }
        [ForeignKey("GradeID")]
        public string GradeID{ get; set; }
    }

最后年级班有

  public class Grade 
    {
        public string GradeID { get; set; }
        public string Comment { get; set; }
    }

我想从 BookDTO 查询所有级别的数据到 Grade。这是我目前拥有的

return await _context.Book.Select(x => new BookDTO
        {
            Id = x.Id,
            Description = x.Description,
            Reviewer = x.Reviewer,        
        }).ToListAsync();

我期待有这样的东西

  {
    "id": "BOOK1",
    "description": "FICTION 101",
    "Reviewer": {
      "id": "JS",
      "name": "Jason",
      "Grade": {
          "GradeID" : "1",
          "Comment" : "Good job",
      },
      "GradeID": "1"
    },
    "ReviewerId": "JS"
  }

相反,我得到的成绩返回为空

  {
    "id": "BOOK1",
    "description": "FICTION 101",
    "Reviewer": {
      "id": "JS",
      "name": "Jason",
      "Grade": null,
      "GradeID": "1"
    },
    "ReviewerId": "JS"
  }

我该怎么做?

标签: postgresqlentity-framework-coreforeign-keysdto

解决方案


推荐阅读