In meiner MVC-Anwendung zu aktualisieren, habe ich eine Methode, die ein Unternehmen zur Datenbank hinzufügen soll (wenn es nicht vorhanden ist), oder aktualisieren (wenn es bereits in der Datenbank ist)Wie Datenbank mit DbSet
//...
var list = _context.CurrencyRepository.Get().ToList();
foreach (var currency in currencies)
{
var item = list.FirstOrDefault(c => c.CurrencyId == currency.CurrencyId);
if (item != null)
{
_context.CurrencyRepository.Update(currency);
}
else
{
_context.CurrencyRepository.Add(currency);
}
}
_context.CommitChanges();
//...
public virtual void Update(T entityToUpdate)
{
//both lines fail with the same error message
_dbSet.Attach(entityToUpdate);
_dbContext.Entry(entityToUpdate).State = EntityState.Modified;
}
public virtual T Add(T entity)
{
return _dbSet.Add(entity);
}
public void CommitChanges()
{
_dbContext.SaveChanges();
}
Es funktioniert für das Hinzufügen, aber leider bekomme ich einen Fehler, wenn ich versuche zu aktualisieren:
eine Einheit vom Typ ‚Währung‘ Anbringen schlug fehl, da eine andere Einheit des gleichen Typs hat bereits die gleiche primäre Schlüsselwert. Dies kann passieren, wenn Sie die Methode "Attach" verwenden oder den Status einer Entität auf "Unverändert" oder "Modifiziert" setzen, wenn Entitäten im Diagramm widersprüchliche Schlüsselwerte aufweisen. Dies liegt möglicherweise daran, dass einige Entitäten neu sind und noch keine datenbankgenerierten Schlüsselwerte erhalten haben. In diesem Fall verwenden Sie die "Add" -Methode oder den Entity-Status "Added", um den Graphen zu verfolgen und anschließend den Status von nicht-neuen Entitäten auf "Unchanged" oder "Modified" zu setzen.
Könnte jemand erklären, wie ich bitte meine Datenbank aktualisieren soll?
vielen Dank für Ihre Antwort. Ich denke, jetzt verstehe ich – Egor