Sto usando EF6.
Dopo aver eliminato un tabel e voglio aggiungere una nuova voce a quella tabella ottengo il seguente errore:
L'aggiornamento dell'archivio, l'inserimento o l'eliminazione dell'archivio hanno interessato un numero imprevisto di righe (0). Le entità potrebbero essere state modificate o eliminate da quando le entità sono state caricate
Il codice per l'eliminazione del database impostabile:
public void ResetStatistics() {
_lisDatabase.Database.ExecuteSqlCommand("TRUNCATE TABLE Sortedtubes");
_lisDatabase.sortedtubes.Local.Clear();
}
Dopodiché voglio aggiungere una nuova voce a quella tabella con il seguente codice:
Sortedtubes tube = new Sortedtubes();
tube.Time = time;
tube.Milliseconds = time.Millisecond.ToString();
tube.Barcode = barcode;
tube.Tubetype = tubeType;
tube.Target = target;
tube.Materialcode = materialCode;
try {
_lisDatabase.sortedtubes.Add(tube);
_lisDatabase.SaveChanges(); // Error appears here
} catch (DbUpdateConcurrencyException ex) {
// maybe do something here?
}
Ho provato le supposizioni sulla documentazione EF senza fortuna: https://msdn.microsoft.com/en-us/data/jj592904
MODIFICARE
Il problema sembra essere il metodo Clear()
( _lisDatabase.sortedtubes.Local.Clear();
). Dopo aver eseguito questo metodo, l'errore appare dopo il prossimo SaveChanges()
.
Quindi forse c'è un altro modo per gestire questo? Ho un GridView nella mia applicazione che è legato all'entità sortedtubes e lo cancello in modo che anche GridView sia cancellato, quando ho troncato la tabella.
Quindi ... finalmente penso di avere una soluzione.
Il mio metodo di reset appare ora:
public void ResetStatistics() {
_lisDatabase.sortedtubes.RemoveRange(_lisDatabase.sortedtubes);
_lisDatabase.SaveChanges();
}
E il mio add rimane lo stesso:
_lisDatabase.sortedtubes.Add(tube);
_lisDatabase.SaveChanges();
ma il "grande" cambiamento era nella mia entità Sortedtubes. Ho cambiato il tipo di tempo da DateTime a una stringa normale
a partire dal:
[Key]
[Column(Order = 1)]
public DateTime? Time { get; set; }
a:
[StringLength(45)]
public string Time { get; set; }
Il problema sembra essere la proprietà Type of the Time dell'entità Sortedtubes . Ma non so perché. Se qualcuno vuole spiegarmi questo caso?
Grazie a tutti per il vostro aiuto.