1
resposta

Escolhendo quais instancias novas serão inseridas na base de dados

Professor, preciso de uma ajuda, estou com um grave problema de performance... Ao clicar em salvar em minha tela de cadastro de Bairros, eu preciso fazer uma busca de Cidade no banco ,do contrário, o Entity tenta inserir uma nova instance de cidade...

Classe Bairro:

public class Bairro
{
    public int Id {get; set;}
   **[Required]**
    public Cidade cidade { get; set; }
}

View

O Razor faz um binding do form criando as duas classes(Bairro e Cidade) com as associações entre elas...

Ao executar o comando abaixo para salvar Bairro no BD:

Solução 1

contexto.Add(bairro);
contexto.SaveChanges();

O Entity tenta inserir um novo registro de cidade no banco por ela também ser uma nova instancia...

"Resolvi" o problema desta maneira:

Solução 2

bairro.cidade=GetCidade(bairro.cidade.Id);//Busca cidade no banco
contexto.Add(bairro);
contexto.SaveChanges();

Essa solução faz o Entity deixar de ver Cidade como uma instancia nova, mas essa busca no banco acaba com a performance do sistema...

Teria como eu utilizar a solução 1, mas informando ao Entity para incluir apenas o Bairro?

1 resposta

Olá, Eduardo

Esse é um projeto seu, ou um projeto aqui do curso? (pergunto porque não estou encontrando esse código).

Experimente marcar a propriedade de navegação Cidade como virtual e criar uma propriedade adicional para CidadeId:

[Required]
public virtual Cidade Cidade { get; set; }
public int CidadeId { get; set; }

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software