По сути, у меня есть связь «один ко многим» между объектом Food и объект Review.
Код: Выделить всё
public class Review
{
public int Id { get; set; }
// ... [other properties] ...
public int FoodId { get; set; }
[JsonIgnore]
public virtual Food? Food { get; set; }
}
public class Food
{
public int Id { get; set; }
// ... [other properties] ...
[ForeignKey("FoodId")]
public List Ratings { get; set; } = [];
}
Код: Выделить всё
POST
Код: Выделить всё
{
// ... [other properties] ...
foodId: [foodId]
}
Я также хочу, чтобы список обзоров объекта Food обновлялся, поэтому, когда я ПОЛУЧАЮ еду, список также возвращаются все его отзывы.
Вот мое сопоставление:
Код: Выделить всё
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity()
.HasMany(f => f.Ratings)
.WithOne(r => r.Food)
.HasForeignKey(r => r.FoodId);
}
public DbSet Foods { get; set; } = null!;
public DbSet Reviews { get; set; } = null!;
Код: Выделить всё
{
... [other properties] ...
foodId: 1
}
Код: Выделить всё
[HttpPost]
public async Task PostReview(Review review)
{
var foodToReview = await _context.Foods.FindAsync(review.FoodId);
if (foodToReview == null)
{
return NotFound();
}
_context.Reviews.Add(review);
await _context.SaveChangesAsync();
return CreatedAtAction(nameof(GetReview), new { id = review.Id }, review);
}
Кроме того, чтобы иметь возможность отправлять POST в ASP.NET Core Web API , мне нужно сделать ссылку Food в Review обнуляемой, чего, по моему мнению, никто больше не делает, и мне интересно, как лучше всего это сделать.
Подробнее здесь: https://stackoverflow.com/questions/791 ... lationship