j'ai code suivant:insert EF6 ou mise à jour pour la collecte des entités
using (var context = new DataContext())
{
var dbHistoryItems = context.Set<HistoryItem>();
var historyItems = history as HistoryItem[] ?? history.ToArray();
var historyItemIds = historyItems.Select(c => c.Id);
var existingEntities = dbHistoryItems.Where(h => historyItemIds.Contains(h.Id));
if (existingEntities.Any())
{
var newEntities = historyItems.Where(h => !existingEntities.Select(e => e.Id).Contains(h.Id));
dbHistoryItems.AddRange(newEntities);
}
context.SaveChanges();
}
où history
est le paramètre d'entrée List<HistoryInfo>
Lorsque l'entité est nouvelle (entité ID n'existe pas dans le contexte) ajouter au contexte. Quand l'entité est existante - je veux juste la sauvegarder (elle peut être modifiée).
Problème dans ce code avec la mise à jour. Il ne met pas à jour les entités existantes.
UPD:
est-il le meilleur moyen d'insérer ou d'une collection d'entités puis en boucle comme mise à jour:
foreach(var item in collection)
{
db.AddOrUpdate(item);
}
db.SaveChanges;
Vous ne modifiez aucune propriété. D'où vient l'histoire et quelles mises à jour vous attendez-vous? – CodeCaster
Et non, _ "l'historique est la liste des paramètres d'entrée" _ ne clarifie pas cela. Est-ce une entité détachée, par exemple à travers un formulaire POST MVC? –
CodeCaster