Sto usando InMemoryDatabase per i miei test di unità. Nel mio test unitario aggiungo alcuni dati al mio DbContext derivato tramite _context.Add(new Item(){Description="desciption"}).
Nel mio test, sto aggiungendo una nuova entità. Ho un conflitto chiave.
Il mio metodo di repository
//Before this method runs _context.Item already has one Item with Id = 1 which I set up in my unit test.
public async Task CreateItem(ItemDM dm){
Item newItem = new Item(){Name = dm.RelatedItem.Process.Name}; //Id is zero here
_context.Add(newItem); // The Error happens here
_context.SaveChanges();
}
L'errore che sto ottenendo è "lo stesso valore chiave per {" id "} è già applicato. Quando si collegano entità esistenti, assicurarsi che sia associata solo un'istanza di entità con un determinato valore di chiave."
Ho capito che EF Core avrebbe incrementato l'ID in modo appropriato, ma ciò non sembra essere il caso.
La ragione per cui questo stava accadendo è perché stavo aggiungendo le mie entità con un valore codificato. Ad esempio. .Add(new Item(){Id = 1})
mia ipotesi è che la capacità di auto-generazione lo riconoscerebbe e si aggiornasse di conseguenza. Mi sbagliavo.
Puntelli su @Ivan Stoev per le informazioni fornite nei commenti