C# 如何在ASP.NET核心WEB API中实现多对多关系
所以我有4门课:C# 如何在ASP.NET核心WEB API中实现多对多关系,c#,asp.net,.net,asp.net-core,entity-framework-core,C#,Asp.net,.net,Asp.net Core,Entity Framework Core,所以我有4门课: public class Book { public int BookId { get; set; } public string Title { get; set; } public Author Author { get; set; } public int AuthorId { get; set; } public ICollection<BookCategory> BookCateg
public class Book
{
public int BookId { get; set; }
public string Title { get; set; }
public Author Author { get; set; }
public int AuthorId { get; set; }
public ICollection<BookCategory> BookCategories { get; set; }
}
public class Author
{
public int AuthorId { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public ICollection<Book> Books { get; set; }
}
public class Category
{
public int CategoryId { get; set; }
public string CategoryName { get; set; }
public ICollection<BookCategory> BookCategories { get; set; }
}
public class BookCategory
{
public int BookId { get; set; }
public Book Book { get; set; }
public int CategoryId { get; set; }
public Category Category { get; set; }
}
我知道如何处理一对多的关系,我为作者和书创建了API,每个作者都有一系列他写的书。但是这个连接表(BookCategory)让我很困惑。对于返回的json格式,您可以先通过
Include
和然后Include
获取所有相关数据
然后使用选择
方法和新对象来形成返回的数据结构:
public IActionResult ReturnJson()
{
var data = _context.Book.Include(x => x.Author)
.Include(x => x.BookCategories).ThenInclude(x => x.Category)
.Select(x => new
{
bookId = x.BookId,
title = x.Title,
authorName = x.Author.Name,
authorSurname = x.Author.Surname,
categories = x.BookCategories.Select(k => k.Category.CategoryName).ToList()
});
return Json(data);
}
以下是返回的数据:
对于返回的json格式,您可以首先通过
Include
和然后Include
获取所有相关数据
然后使用选择
方法和新对象来形成返回的数据结构:
public IActionResult ReturnJson()
{
var data = _context.Book.Include(x => x.Author)
.Include(x => x.BookCategories).ThenInclude(x => x.Category)
.Select(x => new
{
bookId = x.BookId,
title = x.Title,
authorName = x.Author.Name,
authorSurname = x.Author.Surname,
categories = x.BookCategories.Select(k => k.Category.CategoryName).ToList()
});
return Json(data);
}
以下是返回的数据:
你试过什么吗?文档对这些事情有着非常好的描述:这里有很多假设:从dbContext获取书籍,包括BookCategories。当映射到视图模型时,只需将类别名称选择到数组中,这是模型所期望的。您尝试过什么吗?文档对这些事情有着非常好的描述:这里有很多假设:从dbContext获取书籍,包括BookCategories。映射到视图模型时,只需将类别名称选择到数组中,这是模型所期望的。