#

 

 

Fehler-Beschreibung:

Bei der Eingabe von neuen Datensätzen über eine API in ASP.Net Core MVC kann es vorkommen, dass die ID nicht wie vorgegeben um 1 erhöht wird,

sondern sich um 1000 erhöht.

 

 

Ursache:

Es kann sein, dass der ankommende Datensatz eine bewertete ID aufweist. Beim Senden von neuen Datensätzen über die HttpPost API Schnittstelle, darf bei neuen datensätzen die ID nicht angegeben werden oder die ID wird definitiv mit 0 vorgegeben.

Bei der Add-Methode zum Context der SQL Server Datenbank wird die ID immer automatisch vergeben mit der nächst höheren Nummer.

 

Alt:

Original Microsoft API Template

        // POST-NEW: api/Projects   *CREATE NEW Recordset

        [HttpPost]

        public async Task<IActionResult> PostProject ([FromBody] Project project)

        {

            if (!ModelState.IsValid)

            {

                return BadRequest(ModelState);

            }

            //Check here ID

 

            _context.tbl_Projects.Add(project);

            await _context.SaveChangesAsync();

 

            return CreatedAtAction("GetProject", new { id = project.ID_Project }, project);

        }

 

Wenn man die ankommenden Daten prüft, stellt man fest, dass ab und zu falsch ID Daten eingetragen sind. Diese muss man vor weiteren Aktionen korrigieren.

 

Lösung:

Man muss den ankommenden Datensatz von Json prüfen auf die ID. Es kann manchmal vorkommen, dass die ankommende ID mit einer -Zahl oder ungleich 0 Null vergeben wurde.

Deshalb muss man vor der Erstellung eines neuen Datensatzes den ankommenden Datensatz erst prüfen.

Zumindest mit der Prüfung, ob die ID=0 oder Null ist.

        // POST-NEW: api/Projects   *CREATE NEW Recordset

        [HttpPost]

        public async Task<IActionResult> Create_NewProject([FromBody] Project project)

        {

            //------------< Create_NewProject(Project) >------------

            //public async Task<IActionResult> PostProject([FromBody] Project project)

            //*NEW Project

            if (!ModelState.IsValid)

            {

                return BadRequest(ModelState);

            }

            if (project.ID_Project!=0)

            {

                return BadRequest("ID not null or 0");

            }

 

 

            _context.tbl_Projects.Add(project);

            await _context.SaveChangesAsync();

 

            return CreatedAtAction("GetProject", new { id = project.ID_Project }, project);

            //------------</ Create_NewProject(Project) >------------

        }

 

Zum einfachen Test der Funktion sollte man mit Test-Clients wie Postman den neuen API Datensatz mehrmals eingeben.

Mobile

.

123movies