I am trying to run the following code, but this one giving error where it is trying to insert the state back into my bank, however it was fetched through another connection
I know that a solution would be to set the state directly, but I would like to use Navigation only to relate the records, that is, I do not want the State to be saved along with the city. What could you do to resolve this issue?
static void Main(string[] args)
{
Estado estado = GetEstado();
using(TesteContext context = new TesteContext())
{
Cidade cidade = new Cidade();
cidade.Estado = estado;
cidade.Descricao = "SM";
context.Cidade.Add(cidade);
context.SaveChanges();
}
}
static Estado GetEstado()
{
using (TesteContext context = new TesteContext())
{
var estado = context.Estado.FirstOrDefault(a => a.EstadoId == 43);
if (estado == null)
{
estado = new Estado();
estado.EstadoId = 43;
estado.Descricao = "RS";
context.Estado.Add(estado);
context.SaveChanges();
}
return estado;
}
}
public class TesteContext: DbContext
{
public DbSet<Estado> Estado { get; set; }
public DbSet<Cidade> Cidade { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
Database.SetInitializer<TesteContext>(new CreateDatabaseIfNotExists<TesteContext>());
base.OnModelCreating(modelBuilder);
}
}
public class Estado
{
[DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.None)]
[Key]
public int EstadoId { get; set; }
[MaxLength(100)]
[Required]
public string Descricao { get; set; }
}
public class Cidade
{
[Key]
[DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity)]
public int CidadeId { get; set; }
[Required]
public int EstadoId { get; set; }
[MaxLength(100)]
[Required]
public string Descricao { get; set; }
[ForeignKey("EstadoId")]
public virtual Estado Estado { get; set; }
}