none
EF - Relacionamento de entidades RRS feed

  • Pergunta

  • Boa noite galera,

    Estou começando a estudar EF e para tanto estou criando um aplicativo de gestão de processos, porém estou com o seguinte problema:

    Crio uma entidade Usuario e busco do banco uma entidade Permissao (Administrador por exemplo) para associar à primeira. Atribuo à propriedade de relação dentro de usuario (usuario.Permissao) essa permissão retornada e chamo o método para adicionar este usuario ao contexto (e logo ao banco). Porém, ao tentar salvar dá a seguinte msg:

    A propriedade EntityKey só poderá ser definida quando o valor atual da propriedade for nulo.

    Curiosamente, quando realizo a msm operação dentro do using que gerencia o Contexto EF, funciona normalmente. Alguém pode me ajudar com isso? Para mim não seria nada bom ter que abrir o contexto para ter que adicionar esse objeto.

    Considerações:

    - A aplicação está sendo feita em ASP.NET 4, usando C# e EntityFramework.

    - Estou utilizando o using em cada método primário (Salvar, deletar, ...). Isso seria o mais correto em uma aplicação ASP.NET?

    Seguem trechos do código:

    1) Obtendo a permissao para um novo usuario

    PermissaoBLL permissaoBLL = new PermissaoBLL();

    usuario.Id = 0;

    //Nota: até aqui a propriedade EntityKey está nula e a EntityState está com valor Detached, após essa atribuição a primeira deixa de ser nula e a segunda passa a ser Added...

    usuario.PermissaoDTO = permissaoBLL.Busca(per => per.Id == 1).First();

    this.Adiciona(usuario);

     

    2) Adicionando ao contexto e salvando

    using (ObjectContext context = new MeuProjetoEntities(EFManagerDAL.DadosConexao.ToString()))

    {

    context.AddObject(EntitySetName, entidade);

            context.SaveChanges();

    }

    quarta-feira, 23 de fevereiro de 2011 02:45

Respostas

  • Alexandre acho legal vc dar um lida sobre repository com unit of work e vc não terá esses problemas

    http://huyrua.wordpress.com/2010/07/13/entity-framework-4-poco-repository-and-specification-pattern/


    Não esqueça de usar o componente </> na barra para posta seu código.
    quarta-feira, 23 de fevereiro de 2011 15:24

Todas as Respostas