4
respostas

Atualizar Dados Complementares do Usuário

Boa tarde, estou tentando fazer um Update no ApllicationUser na parte de endereços. Acontece os seguintes problemas?

 var domain = Mapper.Map<PessoaFisicaPerfilView,ApplicationUser>(model);
 var result = await UserManager.UpdateAsync(domain);

Se não preencho Email e UserName

Name cannot be null or empty.
Email cannot be null or empty.

Se eu preencho ele da erro que já existe.

4 respostas

UserName e Email normalmente são configurados como Unique no Sql Server. Se você não colocar o Id do usuário na variável domain, o Entity Framework pode retornar esse erro pois já existe outro usuário com o mesmo e-mail.

Você preencheu o Id do usuário no domain?

Boa tarde, Preenchi tudo. Estou fazendo um UpDate quando o view model vem com dados eles fala que existe quando vai nulo fala que não pode ir vazio

??? Sem resposta????

Olá, Flávio. A partir de agora vou te ajudar nessa.

Isso está com cara de problema do AutoMapper com o Entity Framework.

O que eu faria seria obter o objeto de usuário através do UserManager e, em seguida, usar o AutoMapper para atualizar o objeto de domínio com o DTO (model) de argumento:

var userId = User.Identity.GetUserId();
var domain = await UserManager.FindByIdAsync(userId);

domain = Mapper.Map<PessoaFisicaPerfilView, ApplicationUser>(model,  domain);

var result = await UserManager.UpdateAsync(domain);

Desta forma o Entity Framework poderá rastrear as mudanças feitas no objeto de domínio e, quando você usar o UpdateAsync, as mudanças irão para o banco.

Você pode testar estas alterações?

Fico no aguardo. Abs.