Subsônicas e Automapper - dirtyColumns coleção está vazia, portanto, não pode atualizar
-
14-11-2019 - |
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.
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 :)