Dificuldades com EntityFramework

.NET

03/12/2012

    public class UF : Entity
    {       
        public string Nome { get; set; }
    }

    public class Cidade : Entity
    {
        public string Nome { get; set; }
        public virtual UF UF { get; set; }
    }


Quando tento incluir um registro de cidade com uma UF já existente ele Cria novamente outra UF.

var uf = new UF() { Id = 1, Nome = "CE" };
var cidade = new Cidade() { Nome = "Iguatu", UF = uf };

repoCidade.Add(cidade);


Lembrando que já existe um registro no banco de Dados UF com (Id: 1 e Nome: CE) mas ele criar outra UF (Id: 2 e Nome: CE)

PS: Nesse caso eu não quero utilizar a propriedade int UFId e também não quero puxar o registro UF novamente do meu banco para salvá-lo.


No meu caso é que na minha View meu objeto Cidade é JSON:
{
   Nome: "Fortaleza",
   UF: {
       Nome: "CE"
   }
}


e quando converto novamente para objeto C# ele tenta criar um novo registro UF.
Allangomessl

Allangomessl

Curtidas 0

Respostas

Moisés Gonçalves

Moisés Gonçalves

03/12/2012

Você tem que antes verificar se a UF existe, se possível com uma subrotina.
Caso exista, utilize-a, do contrário crie outra.
GOSTEI 0
Allangomessl

Allangomessl

03/12/2012

era isso que eu tava tentando evitar, não queria ir no banco novamente.
tentei mudar a propriedade State no DBContext para Dettach mesmo assim não deu certo.

mas valeu a dica acho que a melhor forma possível é essa mesmo.
GOSTEI 0
Allangomessl

Allangomessl

03/12/2012

apesar de ele não ir sempre no banco mas se no caso o objeto não estivesse carregado ainda teria uma perca de performance principalmente se o servidor não tiver muito recurso de memória.
GOSTEI 0
Allangomessl

Allangomessl

03/12/2012

Ele força que tenha a propriedade UFId.

por que quando altero a UF na hora que eu do stop no servidor e o carrego novamente ele traz o valor da UF Antiga.
GOSTEI 0
POSTAR