ASP.NET 核心 API 无法从多对多关系中的模型获取数组

ASP.NET Core API unable to get array from from model in a many-to-many relationship

我创建了一个 post api 但我无法从我的 api 中的数组中检索数据。

模特

public class Video
{
    public int Id { get; set; }       
    public string Nom { get; set; }
    [NotMapped]
    public IFormFile image { get; set; }
    public String imageURL { get; set; }
    public ICollection<Langue> Langues { get; set; }
}

public class VideoLangue
    {
        public int Id { get; set; }
        public video video { get; set; }
        public int LangueId { get; set; }
        public Langue Langue { get; set; }
    }


public class Langue
    {
        public int LangueId { get; set; }
        public string Designation { get; set; }
        [JsonIgnore]
        public ICollection<Video> Videos { get; set; }
    }

并在 OnMODelCreating

protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Langue>()
                        .HasMany(e => e.Videos)
                        .WithMany(e => e.Langues)
                        .UsingEntity<ViodeLangue>(
                        bg => bg
                            .HasOne(bg => bg.Video)
                            .WithMany()
                            .HasForeignKey("Id"),
                        bg => bg
                            .HasOne(bg => bg.Langue)
                            .WithMany()
                            .HasForeignKey("LangueId"))
                        .ToTable("VideoLangue")
                        .HasKey(bg => new { bg.Id, bg.LangueId });

我的控制器是这样的

 public async Task<ActionResult<Cours>> PostCours([FromForm] Video video)
    {

当我请求 api 并查看视频 ID 和 nom 的值时,没有问题,但 langues 为空(count= 0 且没有原始数据。

通过swagger请求或postman给出保存结果(见swagger接口)

swagger 生成的请求

 curl -X 'POST' \
  'https://localhost:44349/api/Cours' \
  -H 'accept: text/plain' \
  -H 'Content-Type: multipart/form-data' \
  -F 'Nom=la bonne video' \
  -F 'Langues={
  "langueId": 1,
  "designation": "Français"
}' \
  -F 'Langues={
  "langueId": 3,
  "designation": "chinois"
}' \
  -F 'Id=5'

在visual Studio中结果是

你有解决办法吗?

您将表单数据与 JSON 混合在一起。它要么都必须在 JSON 中(我会这样做),要么都必须在表单数据中。要将值数组添加为表单数据,您必须为数组中的每个元素使用方括号中的索引(例如 [0])。

我认为这可能有效(未经测试):

curl -X 'POST' \
  'https://localhost:44349/api/Cours' \
  -H 'accept: text/plain' \
  -H 'Content-Type: multipart/form-data' \
  -F 'Nom=la bonne video' \
  -F 'Langues[0].LangueId=1' \
  -F 'Langues[0].designation=Français' \
  -F 'Langues[1].LangueId=3' \
  -F 'Langues[1].designation=chinois' \
  -F 'Id=5'