Ho un primo modello di database.
L'interfaccia utente della mia applicazione fornisce un gruppo di checkbox, uno per ogni valore in Data_Type.
Quando l'utente ne verifica uno, mi aspetto che venga aggiunta una riga in BUS_APPL_DATA_TYPE, tuttavia sto ricevendo un errore su Impossibile inserire un valore esplicito per la colonna Identity in DATA_TYPE (E assolutamente non voglio inserire dati in questa tabella)
La mia classe di modello EF per BUS_APPL ha questa proprietà
public ICollection<BusApplDataType> BusApplDataType { get; set; }
E quella classe del modello EF sembra
public partial class BusApplDataType
{
public int BusApplId { get; set; }
public int DataTypeId { get; set; }
[Newtonsoft.Json.JsonIgnore]
public BusAppl BusAppl { get; set; }
public DataType DataType { get; set; }
}
Cosa devo aggiungere esattamente alla collezione BusApplDataType per ottenere un record da inserire in BUS_APPL_DATA_TYPE?
Modifica: in corrispondenza di un punto di interruzione subito prima di SaveChanges. L'articolo nell'indice 2 è esistente e non causa problemi. L'articolo nell'indice 3 è nuovo. Senza questo tutto si aggiorna bene. C'è un DATA_TYPE con ID 5 nel database.
Il codice circostante, se aiuta.
[HttpPut("{id}")]
public IActionResult Update(int id, [FromBody] BusAppl item)
{
...
var existing = _context.BusAppl.FirstOrDefault(t => t.Id == id);
...
existing.BusApplDataType = item.BusApplDataType; //A bunch of lines like this, only this one causes any issue.
...
_context.BusAppl.Update(existing);
_context.SaveChanges();
return new NoContentResult();
}
Il mio problema era che dovevo usare il mio contesto per cercare l'entità reale, usando le informazioni passate, invece di usare quella con tutti gli stessi valori che sono stati passati direttamente alla mia API.