ho semplice entità:Entity Framework Codice Prima AddOrUpdate metodo inserire i valori duplicati
public class Hall
{
[Key]
public int Id {get; set;}
public string Name [get; set;}
}
Poi nel metodo Seed
che uso AddOrUpdate
per popolare tabella:
var hall1 = new Hall { Name = "French" };
var hall2 = new Hall { Name = "German" };
var hall3 = new Hall { Name = "Japanese" };
context.Halls.AddOrUpdate(
h => h.Name,
hall1,
hall2,
hall3
);
Poi corro nella gestione dei pacchetti Console:
Add-Migration Current
Update-Database
Va tutto bene: ho tre righe in il tavolo "Hall". Ma se corro nel pacchetto di console di gestione di nuovo Update-Database
ho già cinque righe:
Id Name
1 French
2 Japaneese
3 German
4 French
5 Japanese
Perché? Penso che dovrebbe essere di nuovo tre righe, non cinque. Ho provato a usare la proprietà Id
invece di Name
ma non fa la differenza.
UPDATE:
Questo codice produce lo stesso risultato:
var hall1 = new Hall { Id = 1, Name = "French" };
var hall2 = new Hall { Id = 2, Name = "German" };
var hall3 = new Hall { Id = 3, Name = "Japanese" };
context.Halls.AddOrUpdate(
h => h.Id,
hall1);
context.Halls.AddOrUpdate(
h => h.Id,
hall2);
context.Halls.AddOrUpdate(
h => h.Id,
hall3);
anche io ho l'ultima EntityFramework installato tramite NuGet.
Che cosa succede se si utilizza chiamata separata a 'AddOrUpdate' per ogni record? È abbastanza strano che tu abbia 5 record.Significa che ha funzionato una volta, quindi deve esserci qualcosa di speciale nella tua. –
@Ladislav Mrnka: la stessa cosa per chiamate separate. –
Guarda questo: - http://thedatafarm.com/blog/data-access/take-care-with-ef-4-3-addorupdate-method/ –