3
I’m finding it difficult to work with the method Seed
, Because I register the state, and right away I wanted to register the cities, and then I can’t reference the state in the city, what could I do? I believe you have a solution.
Seed Method
namespace Projeto.Migrations
{
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Entity.Migrations;
using System.Linq;
using Projeto.Models;
internal sealed class Configuration : DbMigrationsConfiguration<Projeto.Models.Context>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
protected override void Seed(Projeto.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);
}
IList<Cidade> cidades = new List<Cidade>();
cidades.Add(new Cidade() { Nome = "Aparecida", Estado = "SP" });
cidades.Add(new Cidade() { Nome = "Guaratinguetá", Estado = 25 });
cidades.Add(new Cidade() { Nome = "Roseira", Estado = 25 });
cidades.Add(new Cidade() { Nome = "Lorena", Estado = "25" });
cidades.Add(new Cidade() { Nome = "Taubaté", Estado = "São Paulo" });
cidades.Add(new Cidade() { Nome = "Caçapava", Estado = "25" });
cidades.Add(new Cidade() { Nome = "Pindamonhangaba Federal", Estado = "25" });
cidades.Add(new Cidade() { Nome = "Potim", Estado = "25" });
cidades.Add(new Cidade() { Nome = "São José dos Campos", Estado = "25" });
cidades.Add(new Cidade() { Nome = "Tremembé", Estado = "25" });
foreach (Cidade cidade in cidades)
{
context.Cidades.AddOrUpdate(x => x.CidadeID, cidade);
}
}
}
}
state class
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
namespace Projeto.Models
{
public class Estado
{
[Key]
public int EstadoID { get; set; }
[Required(ErrorMessage = "Preencha o nome do estado")]
[DisplayName("Estado")]
[StringLength(50, MinimumLength = 3, ErrorMessage = "O Estado deve ter de 3 a 50 caracteres.")]
public string Nome { get; set; }
[Required(ErrorMessage = "Preencha a sigla")]
[DisplayName("Sigla")]
[StringLength(2, MinimumLength = 2, ErrorMessage = "A sigla deve ter de 2 caracteres.")]
public string Sigla { get; set; }
//Relacionamentos
public virtual ICollection<Cidade> Cidades { get; set; }
}
}
City Class
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
namespace Projeto.Models
{
public class Cidade
{
[Key]
public int CidadeID { get; set; }
[Required(ErrorMessage = "Preencha o ")]
[DisplayName("Nome")]
[StringLength(50, MinimumLength = 3, ErrorMessage = " deve ter de 3 a 50 caracteres.")]
public string Nome { get; set; }
////Relacionamentos
[DisplayName("Estado")]
public int EstadoID { get; set; }
public virtual Estado Estado { get; set; }
public virtual ICollection<Local> Locais { get; set; }
}
}
Error:
Class Syystem.String Represents text as a series of Unicode characters.
Error:
Cannot implicitly Convert type 'string' to 'Project.Models.State'
Obs: I’ve tried giving a Convert Convert.ToInt32(25)
Thanks @Gypsy, I had done otherwise, but I tested with yours too and it worked, it was much better than I had done! Thanks
– Fabio Souza