【问题标题】:Http POST with many to many ef core 5.0带有多对多 ef core 5.0 的 Http POST
【发布时间】:2021-08-19 17:22:19
【问题描述】:

我是一个应用程序(Web API 核心)我有三个表(多对多)。

表格名称:

  • 图书(BookId、名称)
  • 类别(CategoryId、CategoryName)
  • BookCategory(BookId、CategoryId)

我正在尝试为多对多表创建一个 HTTP POST 端点。我正在获取 JSON 数据。 (见下文)

[HttpPost()]
public async Task<IActionResult> CreateBook([FromBody] List<Entities.Book> bookCollection)
{
   HERE: I WOULD LIKE TO ADD RECORDS TO THE BOOK TABLE FOR EXAMPLE “MathBook” and “ScienceBook”. 
 Also, would like to add records to BookCategory(linking table)
//Assuming category already exists in the Category table. 
}

JSON 数据:通过 POSTMAN 传递

[
  {
    "BookId": "9a6383b7-f581-405f-9cd4-4adf91052ca6",
    "name": "MathBook",
    "category": [
      {
        "CategoryId": "2329E0D5-476F-407A-9458-949D0D08123F"
      },
      {
        "CategoryId": "2325E0D5-476F-407A-9458-949D0D08123F"
      }
    ]
  },
  {
    " BookId": "4a6383b7-f581-405f-9cd4-4adf91052ca6",
    "name": "ScienceBook",
    "category": [
      {
        "CategoryId": "3329E0D5-476F-407A-9458-949D0D08123F"
      },
      {
        "CategoryId": "3329H0D5-476F-407A-9458-949D0D08123F"
      }
    ]
  }
]

我正在尝试为多对多表创建一个 HTTP POST 端点。我正在获取以下格式的 JSON 数据。我可以知道使用 EFCore 5.0 将数据保存在表中的最佳方法是什么吗?

我做了谷歌并找到了以下解决方案。有没有更好的方法来做到这一点?

//Get bookCategory from the table
var category = context. Category.where(c=>c. CategoryId== categoryId)

//Create Book Object
 var MathBook = new Book()
  {
       Title = "MathBook",
       Genres = category
  };
context.AddRange(MathBook);
context.SaveChanges();

【问题讨论】:

  • 您从哪里获得 categoryId?你能显示整个代码吗
  • 所以端点的重点是创建可以有零个或多个预先存在的类别的新书,对吧?你找到的代码应该够用了。

标签: c# .net entity-framework-core asp.net-core-webapi


【解决方案1】:

首先,您必须查看此article,了解如何建立多对多关系 然后你可以使用 ThenInclude 来加入表格

你也可以查看这篇文章How to handle Many-To-Many in Entity Framework Core

【讨论】:

    猜你喜欢
    • 2021-04-30
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    • 2020-11-19
    • 2020-07-14
    • 1970-01-01
    相关资源
    最近更新 更多