【发布时间】: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