Array
(
)

Dificuldades com EntityFramework

Allangomessl
   - 03 dez 2012

#Código

    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.
#Código
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:
#Código
{
   Nome: "Fortaleza",
   UF: {
       Nome: "CE"
   }
}

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

Moisés Gonçalves
   - 03 dez 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.

Allangomessl
   - 03 dez 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.

Allangomessl
   - 03 dez 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.

Allangomessl
   - 03 dez 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.