none
Entity Framework - CRUD em entidade filha através de entidade pai RRS feed

  • Pergunta

  • Olá a todos,

    Estou tentando excluir, inserir e alterar uma entidade filha de uma entidade pai utilizando o Entity Framework. Exemplo: tenho um sistema com

    várias funcionalidades e quero excluir uma delas. Como faço para acatar as atualizações diretamente pela entidade pai?

    Estava utilizando o código abaixo:

    contexto.Sistema.Attach(entidadePrincipal);

    contexto.ObjectStateManager.ChangeObjectState(entidadePrincipal, EntityState.Unchanged);

    Porém o erro abaixo foi apresentado:

    Conflicting changes to the role 'Sistema' of the relationship 'Model.FK_Funcionalidade_Sistema' have been detected. 

    Grato 

    quarta-feira, 16 de fevereiro de 2011 13:22

Todas as Respostas

  • Posta seu code completo

    Não esqueça de usar o componente </> na barra para posta seu código.
    quinta-feira, 17 de fevereiro de 2011 10:49
  • Segue o código:

    //Entidade Pai - Sistema
    Save(entidade);
    SaveChanges();
    
    FuncionalidadeDAO _DAOFunc = new FuncionalidadeDAO();
    _DAOFunc.Save(entidade.Funcionalidade);     
    _DAOFunc.SaveChanges();
    
    public void SaveChanges()
      {
       EDMx.SaveChanges();
      }
    
      public void Insert(Sistema entidade)
      {
       EDMx.Sistema.Attach(entidade);
       EDMx.ObjectStateManager.ChangeObjectState(entidade, EntityState.Added);
      }
    
      public void Update(Sistema entidade)
      {
       EDMx.Sistema.Attach(entidade);
       EDMx.ObjectStateManager.ChangeObjectState(entidade, EntityState.Modified);
      }
    
      public void Save(Sistema entidade)
      {
       if (entidade.idSistema.Equals(0))
        Insert(entidade);
       else
        Update(entidade);
      }
    
      public void Delete(Sistema entidade)
      {
       EDMx.Sistema.Attach(entidade);
       EDMx.ObjectStateManager.ChangeObjectState(entidade, EntityState.Deleted);
      }
    
    
    //Entidade Filha - Funcionalidade
    public void SaveChanges()
      {
       EDMx.SaveChanges();
      }
    
    public void Insert(Funcionalidade entidade)
      {
       EDMx.Funcionalidade.Attach(entidade);
       EDMx.ObjectStateManager.ChangeObjectState(entidade, EntityState.Added);
      }
    
      public void Update(Funcionalidade entidade)
      {
       EDMx.Funcionalidade.Attach(entidade);
       EDMx.ObjectStateManager.ChangeObjectState(entidade, EntityState.Modified);
      }
    
      public void Delete(Funcionalidade entidade)
      {
       EDMx.Funcionalidade.Attach(entidade);
       EDMx.ObjectStateManager.ChangeObjectState(entidade, EntityState.Deleted);
      }
    
    public void Save(ICollection<Funcionalidade> collection)
      {
    

    for

     

     

    (int i = 0; i < collection.Count; i++)

    {

     

     

    if (collection.ElementAt(i).Ativo.Equals("X"))

    {

    Delete(collection.ElementAt(i));

    }

     

     

    else

    {

     

     

    if (collection.ElementAt(i).idFuncionalidade >= 9999999)

    Insert(collection.ElementAt(i));

     

     

    else

    Update(collection.ElementAt(i));

    }

    }

    }
    quinta-feira, 17 de fevereiro de 2011 11:43