该问题的解决方案是使用DbContext中的AddRange()方法手动将所需的关联实体添加到中间表中,然后将这些更改保存到数据库中。代码示例如下:
[HttpPost]
public async Task CreateBook([FromBody] BookDTO bookDto)
{
var newBook = new Book
{
Title = bookDto.Title,
Author = bookDto.Author,
Genres = new List()
};
foreach (var genreId in bookDto.GenreIds)
{
var genre = await _context.Genres.SingleOrDefaultAsync(g => g.Id == genreId);
newBook.Genres.Add(genre);
}
_context.Add(newBook);
await _context.SaveChangesAsync();
return Ok();
}