Subsônicas e Automapper - dirtyColumns coleção está vazia, portanto, não pode atualizar

StackOverflow https://stackoverflow.com/questions/5491733

Pergunta

Eu estou usando Subsónico 3 e Automapper em um asp.net MVC3 projeto.

Na minha HttpPost ActionResult, eu estou tomando o meu modelo e o mapeamento para o meu Subsónico gerado entidade.

Os trabalhos de mapeamento claro, mas eu não posso atualizar a entidade.

Após a inspeção, é porque eu não tenho sujo colunas, portanto, a minha chamada para Update() falha como Subsónico não acho que ele precisa atualizar nada.

Eu já re-cheio de buracos o código de cargas, mesmo forçando o método para carregar a entidade a partir do db novamente antes de mapeamento contra o modelo.Ele só parece que o mapeamento destrói o dirtyColumns de rastreamento.E. g.se eu mapa depois carregando a partir do banco de dados, e, em seguida, alterar aleatória propriedade, que ele não fique marcado como um sujo coluna.

Eu também tentei usar o SetIsLoaded(true) chamada de método.Nenhuma alegria, depois de mapeamento.

Aqui está o meu método:

    [HttpPost]
    public virtual ActionResult Edit(SinglePersonModel model)
    {
        if (ModelState.IsValid)
        {
            Data.Person person;

            //Now Map my model to my entity - this works
            Mapper.CreateMap<SinglePersonModel, Data.Person>();
            person = Mapper.Map<SinglePersonModel, Data.Person>(model);

            //THIS DOESN'T SET MY COLUMN TO DIRTY
            person.Link = "asdjsadij";

            //THIS DOESN'T SET MY COLUMN TO DIRTY EITHER
            person.SetIsLoaded(true);
            person.Link = "asdjsadij";

            if (person.PersonId > 0)
                PersonRepository.UpdatePerson(person);
            else
                PersonRepository.CreatePerson(person);

            return RedirectToAction(MVC.SecureAdministration.Person.Index());
        }
        else return View(model);
    }

Os métodos Estáticos no meu PersonRepository basta ligar subsónico do Update() e Save (), respectivamente.

Quaisquer ideias serão muito apreciados.Agora estou pensando que talvez eu precise colocar algumas propriedades adicionais em meu modelo, para se certificar de que eles se transportado para a entidade o automapper.

No pior caso, eu vou ter que simplesmente não usar o Automapper quando o mapeamento de volta para as entidades do modelo, o que seria um saco.

Foi útil?

Solução

AutoMapper.Mapper.Map<SinglePersonModel, Data.Person>(model, person); - Você já tentou-lo assim?Isso não atribuir uma nova instância do objeto, mas atribui ao objeto existente.Apenas um pensamento.Eu entendo o desejo de não carregar da db.Mas percebi que isso pode ajudar um pouco :)

Obrigado por isso - contentes em ajudar :)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top