none
Navigation Properties RRS feed

  • Pergunta

  • boa tarde pessoal, sou novo no mvc e no entity framework, tudo que estou fazendo é por conta própria e alguns exemplos e tutoriais na internet. Estou com o seguinte problema.

    Tenho o seguinte modelo:

     public class AfinidadeModel

        {
            [Key]
            [Display(Description="Código")]
            [StringLength(5)]
            public string CODAFINIDADE { get; set; }
            [Display(Description = "Descrição")]
            [Required(ErrorMessage = "Informe a descrição", AllowEmptyStrings = false)]
            [StringLength(50)]
            public string DESCRICAO {get; set; }
            public string STATUS { get; set; }
            public string ENTIDADE { get; set; }

    //navigation property

    [ForeignKey("ENTIDADE")] 
            public virtual EntidadeModel DadosEntidade { get; set; }
    }

    qdo vou salvar ou fazer um update em um registro com o entity framework, ele tenta inserir ou fazer update dos dados que estão na proprieda DadosEntidade. Isso está correto? Tem como fazer o entity framework nao tentar adicionar ou atualizar os dados?

    abraços...

    quarta-feira, 27 de junho de 2012 18:50

Todas as Respostas

  • Ele só vai salvar/editar EntidadeModel DadosEntidade se você alterar as propriedades.

    Tens como adicionar o seu código aqui. Fica mais fácil.


    Não esqueça de marcar o post como útil caso tenha te ajudado.


    • Editado Marco Souza quarta-feira, 27 de junho de 2012 18:58
    quarta-feira, 27 de junho de 2012 18:56
  • na minha view eu tenho somente um campo do model EntidadeModel, que é pra mostrar o nome da entidade que a afinidade esta vinculada. Qdo vou inserir um registro novo até consigo que o entity framework nao tente salvar os dadosEntidade usando o seguinte comando:

    db.AfinidadeModels.Add(afinidademodel);

            db.Entry(afinidademodel.DadosBanco).State = EntityState.Detached;

    mas qdo vou fazer o update mesmo mudando o state da entidade para unchanged ou usando o comando acima ele tenta gravar. Não estou alterando os dadosEntidade somente os da afinidade;

    abaixo uma tela do meu cadastro.

    

    quarta-feira, 27 de junho de 2012 19:08
  • Tens como postar o código da sua view, pois o problema pode está ocorrendo lá.

    Como você está recuperando o valor de EntidadeModel DadosEntidade

    está setando manualmente?

    public ActionResult Editar(...){
    obj.DadosEntidade = new DadosEntidade{Id = 1};
    context.update(obj);
    }

    ou você está usando o bind da Action



    public ActionResult Editar(int id, FormCollection form){

    var obj = context.getId(id);

    UpdateModal(obj);

    context.update(obj);

    }


    Não esqueça de marcar o post como útil caso tenha te ajudado.

    quarta-feira, 27 de junho de 2012 19:47
  • consegui fazer funcionar alterando o seguinte codigo da minha view;

    de:

    @Html.TextBoxFor(model => model.DadosEntidade, new { @class = "field field500px" })

    por:

    @Html.TextBox("DadosEntidade_NOMEENTIDADE", (Model.DadosEntidade == null ? "" : Model.DadosEntidade.NOMEENTIDADE) , new { @class = "field field500px" })

    quarta-feira, 27 de junho de 2012 19:58