1
I’m using this code in Seed to generate values in my table, so I don’t have to type in the database, when I change something of my code and need to give an update in the database, so it’s not running, because as far as I have intended, the code below, serves to add or update the information, but it is only adding the values, and with this is duplicating.
context.Estados.Addorupdate(x => x.Estadoid, state);
The Seed method is as follows...
internal sealed class Configuration : DbMigrationsConfiguration<Tribus.Models.Context>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
protected override void Seed(Tribus.Models.Context context)
{
IList<Estado> estados = new List<Estado>();
estados.Add(new Estado() { Nome = "Acre", Sigla = "AC" });
estados.Add(new Estado() { Nome = "Alagoas", Sigla = "AL" });
estados.Add(new Estado() { Nome = "Amapá", Sigla = "AP" });
estados.Add(new Estado() { Nome = "Amazonas", Sigla = "AM" });
estados.Add(new Estado() { Nome = "Bahia", Sigla = "BA" });
estados.Add(new Estado() { Nome = "Ceará", Sigla = "CE" });
estados.Add(new Estado() { Nome = "Distrito Federal", Sigla = "DF" });
estados.Add(new Estado() { Nome = "Espírito Santo", Sigla = "ES" });
estados.Add(new Estado() { Nome = "Goiás", Sigla = "GO" });
estados.Add(new Estado() { Nome = "Maranhão", Sigla = "MA" });
estados.Add(new Estado() { Nome = "Mato Grosso", Sigla = "MT" });
estados.Add(new Estado() { Nome = "Mato Grosso do Sul", Sigla = "MS" });
estados.Add(new Estado() { Nome = "Minas Gerais", Sigla = "MG" });
estados.Add(new Estado() { Nome = "Pará", Sigla = "PA" });
estados.Add(new Estado() { Nome = "Paraíba", Sigla = "PB" });
estados.Add(new Estado() { Nome = "Paraná", Sigla = "PR" });
estados.Add(new Estado() { Nome = "Pernambuco", Sigla = "PE" });
estados.Add(new Estado() { Nome = "Piauí", Sigla = "PI" });
estados.Add(new Estado() { Nome = "Rio de Janeiro", Sigla = "RJ" });
estados.Add(new Estado() { Nome = "Rio Grande do Norte", Sigla = "RN" });
estados.Add(new Estado() { Nome = "Rio Grande do Sul", Sigla = "RS" });
estados.Add(new Estado() { Nome = "Rondônia", Sigla = "RO" });
estados.Add(new Estado() { Nome = "Roraima", Sigla = "RR" });
estados.Add(new Estado() { Nome = "Santa Catarina", Sigla = "SC" });
estados.Add(new Estado() { Nome = "São Paulo", Sigla = "SP" });
estados.Add(new Estado() { Nome = "Sergipe", Sigla = "SE" });
estados.Add(new Estado() { Nome = "Tocantins", Sigla = "TO" });
foreach (Estado estado in estados)
{
context.Estados.AddOrUpdate(x => x.EstadoID, estado);
}
context.SaveChanges();
}
Thanks for the reply @Tobymosque. not yet tested pq today will be a busy day for me, but tomorrow I already see if everything is fine. Thanks anyway
– Fabio Souza
Thanks for the help, the process I was doing was right, but the verification was being done by the ID, and with that the other fields were duplicating. With your answer I managed to understand how Seed works, and then I switched context.Estados.Addorupdate(x => x.Estadoid, state); for context.Estados.Addorupdate(x => x.Acronym, state); and it worked. I tested using your method also worked, but as I had done with other attributes, I changed to my standard. Thank you
– Fabio Souza
I understand, ended up opting for suggestion 2
– Tobias Mesquita