Bonjour à tous.
Voici mon problème.

J'ai crée une Web API Asp.Net qui permet d'enregistrer des données dans deux tables sql server. (tables Prelevement, DetailsPrelevement)
voici les models
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
 
/// Prelevement
namespace LIMS24092022.Models
{
    public partial class Prelevement
    {
        public Prelevement()
        {
            DetailsPrelevements = new HashSet<DetailsPrelevement>();
        }
 
        public int Id { get; set; }
        public DateTime DatePrelevement { get; set; }
        public DateTime? HeureDebPrelevement { get; set; }
        public DateTime? HeureFinPrelevement { get; set; }
        public DateTime? HeureSortie { get; set; }
        public int? EquipementPrelevId { get; set; }
        public int? SiteclientId { get; set; }
        public int? EchneurId { get; set; }
        public int? NbreLot { get; set; }
        public DateTime? DateConstitution { get; set; }
        public DateTime? HeureDebConstitution { get; set; }
        public DateTime? HeureFinConstitution { get; set; }
        public DateTime? DateTamisage { get; set; }
        public DateTime? HeureDebTamisage { get; set; }
        public DateTime? HeureFinTamisage { get; set; }
        public DateTime? DateQuartage { get; set; }
        public DateTime? HeureDebQuartage { get; set; }
        public DateTime? HeureFinQuartage { get; set; }
        public int? EquipementCartageId { get; set; }
        public DateTime? DateQuadrillage { get; set; }
        public DateTime? HeureDebQuadrillage { get; set; }
        public DateTime? HeureFinQuadrillage { get; set; }
        public int? EquipementQuadrillageId { get; set; }
        public DateTime? DateConditionnement { get; set; }
        public DateTime? HeureDebConditionnement { get; set; }
        public DateTime? HeureFinConditionnement { get; set; }
        public int? EmballageId { get; set; }
        public int? ExpedId { get; set; }
        public int? PorteurId { get; set; }
        public int? TransportId { get; set; }
        public int? MatiereId { get; set; }
        public string Description { get; set; }
        public string Elements { get; set; }
        public int? ClientId { get; set; }
        public int? LotId { get; set; }
        public DateTime? DateExp { get; set; }
        public DateTime? Servertime { get; set; }
        public int? CreatedBy { get; set; }
        public DateTime? CreatedOn { get; set; }
        public int? UpdatedBy { get; set; }
        public DateTime? UpdatedOn { get; set; }
        public int? LaboId { get; set; }
        public int? TypedocId { get; set; }
        public int? Oldid { get; set; }
        public string Workorder { get; set; }
 
        public virtual Client Client { get; set; }
        public virtual Labo Labo { get; set; }
        public virtual ICollection<DetailsPrelevement> DetailsPrelevements { get; set; }
    }
}
DetailsPrelevement

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
///Details prelevement
namespace LIMS24092022.Models
{
    public partial class DetailsPrelevement
    {
        public DetailsPrelevement()
        {
            Ehcantillons = new HashSet<Ehcantillon>();
        }
 
        public int Id { get; set; }
        public int Idprelevement { get; set; }
        public string Refclient { get; set; }
        public int? CpId { get; set; }
        public double? QuantitePrelevee { get; set; }
        public double? PoidsSsm { get; set; }
        public double? PoidsClient { get; set; }
        public double? PoidsOcc { get; set; }
        public double? PoidsCeec { get; set; }
        public string ListeElements { get; set; }
        public DateTime? CreatedOn { get; set; }
        public int? CreatedBy { get; set; }
        public DateTime? UpdatedOn { get; set; }
        public int? UpdateBy { get; set; }
        public DateTime? TimeInserted { get; set; }
        public int? LaboId { get; set; }
        public int? Iddemande { get; set; }
        public int? Oldidprelevement { get; set; }
 
        public virtual Prelevement IdprelevementNavigation { get; set; }
        public virtual ICollection<Ehcantillon> Ehcantillons { get; set; }
    }
}

et le controller prelevement

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
 
namespace LIMS24092022.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class PrelevementsController : ControllerBase
    {
        private readonly APIContext _context;
 
        public PrelevementsController(APIContext context)
        {
            _context = context;
        }
 
        // GET: 
        [HttpGet]
        public async Task<ActionResult<IEnumerable<Prelevement>>> GetPrelevements()
        {
            return await _context.Prelevements.ToListAsync();
        }
 
        // GET: 
        [HttpGet("{id}")]
        public async Task<ActionResult<Prelevement>> GetPrelevement(int id)
        {
            var prelevement = await _context.Prelevements.FindAsync(id);
 
            if (prelevement == null)
            {
                return NotFound();
            }
 
            return prelevement;
        }
 
        // PUT: 
        // To protect from overposting attacks, see https://go.microsoft.com/fwlink/?linkid=2123754
        [HttpPut("{id}")]
        public async Task<IActionResult> PutPrelevement(int id, Prelevement prelevement)
        {
            if (id != prelevement.Id)
            {
                return BadRequest();
            }
 
            _context.Entry(prelevement).State = EntityState.Modified;
 
            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!PrelevementExists(id))
                {
                    return NotFound();
                }
                else
                {
                    throw;
                }
            }
 
            return NoContent();
        }
 
        // POST: 
        // To protect from overposting attacks, see https://go.microsoft.com/fwlink/?linkid=2123754
        [HttpPost]
        public async Task<ActionResult<Prelevement>> PostPrelevement(Prelevement prelevement)
        {
            _context.Prelevements.Add(prelevement);
            await _context.SaveChangesAsync();
 
            return CreatedAtAction("GetPrelevement", new { id = prelevement.Id }, prelevement);
        }
 
        // DELETE: 
        [HttpDelete("{id}")]
        public async Task<IActionResult> DeletePrelevement(int id)
        {
            var prelevement = await _context.Prelevements.FindAsync(id);
            if (prelevement == null)
            {
                return NotFound();
            }
 
            _context.Prelevements.Remove(prelevement);
            await _context.SaveChangesAsync();
 
            return NoContent();
        }
 
        private bool PrelevementExists(int id)
        {
            return _context.Prelevements.Any(e => e.Id == id);
        }
    }
}

Pendant les tests, avec Postman tout fonctionne bien, je peux enregistrer un prélevement avec plusieurs détails en une seule fois.

Mais en production, je peux enregistrer un prélevement avec TROIS détails seulement.
l'API revoie une erreur 500 lorsque j'essaie d'enregistrer un prélevement avec PLUS DE TROIS DETAILS PRELEVEMENT.

Je n'arrive pas à déterminer le problème pour corriger.

Pourriez-vous s'il vous plait m'aider.

D'avance merci beaucoup.