需要一种方法来使用实体框架核心中的C#Linq从第二个表中检索数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了需要一种方法来使用实体框架核心中的C#Linq从第二个表中检索数据相关的知识,希望对你有一定的参考价值。

我无法从第二个表中返回子数据,使用第一个表来购买外键。

我有以下使用Entity Framework Core Code第一种方法创建的表:

 public class BoardGame
 {
    public int id { get; set; }
    public double price { get; set; }
    public List<BoardGameTitle> BoardGameTitle{get;set;}
 }

 public class BoardGameTitle
 {
     public int id { get; set; }
     public string Name { get; set; }
     public string Description { get; set; }

     public int languageId { get; set; }

     public int BoardGameId{get;set;}
     public BoardGame BoardGame{get;set;}
  }

 public class TableFlipDB :DbContext{
        public TableFlipDB (DbContextOptions<TableFlipDB> options)
        :base(options)
        {}

        public DbSet<BoardGame> BoardGame{get;set;}
        public DbSet<BoardGameTitle> BoardGameTitle{get;set;}

        protected override void OnModelCreating(ModelBuilder modelBuilder){
            modelBuilder.Entity<BoardGame>().HasMany(bg=>bg.BoardGameTitle).WithOne(bg=>bg.BoardGame);
            //modelBuilder.Entity<BoardGameTitle>().HasOne(BoardGameTitle=>BoardGameTitle.BoardGame).WithMany(BoardGameTitle=>BoardGameTitle.BoardGameTitle);
        }
    }

第二个表BoardGameTitle通过属性BoardGame包含下表BoardGameId的外键,

当我检索棋盘游戏列表时,我无法从属性BoardGameTitle中的第二个表中获取相关数据,该属性返回null

我的控制器

 public ActionResult<List<BoardGame>> GetAll()
 {
   return TableFlipDB.BoardGame.ToList();
 }

预期结果是:

[
  {
    "id": 1,
    "price": 100,
    "boardGameTitle": [
      {
        "id": 1,
        "name": "b1",
        "description": "b1",
        "languageId": 1,
        "boardGameId": 1,
        "boardGame": {
          "id": 1,
          "price": 100,
          "boardGameTitle": []
        }
      }
    ]
  },
  {
    "id": 2,
    "price": 200,
    "boardGameTitle": [
      {
        "id": 2,
        "name": "b2",
        "description": "b2",
        "languageId": 1,
        "boardGameId": 2,
        "boardGame": {
          "id": 2,
          "price": 200,
          "boardGameTitle": [
            {
              "id": 3,
              "name": "b22",
              "description": "b22",
              "languageId": 2,
              "boardGameId": 2
            }
          ]
        }
      },
      {
        "id": 3,
        "name": "b22",
        "description": "b22",
        "languageId": 2,
        "boardGameId": 2,
        "boardGame": {
          "id": 2,
          "price": 200,
          "boardGameTitle": [
            {
              "id": 2,
              "name": "b2",
              "description": "b2",
              "languageId": 1,
              "boardGameId": 2
            }
          ]
        }
      }
    ]
  }
]

但结果我得到了

[ { "id": 1, "price": 100, "boardGameTitle": null }, { "id": 2, "price": 200, "boardGameTitle": null } ]

以上是关于需要一种方法来使用实体框架核心中的C#Linq从第二个表中检索数据的主要内容,如果未能解决你的问题,请参考以下文章

实体框架Linq查询:如何在多个导航属性上从何处选择并从第三个导航属性中选择

查询 (LINQ) 表达式无法转换为实体框架核心

在实体框架核心和linq中查询时可以写case吗?

使用 LINQ 和实体框架检查 c# var 中的空值

选择中的Linq到实体自定义功能

如何在 LINQ 查询中使用自定义方法