I want to register a person, which I divided into three entities: Person, Contact and Address. And I want it to be just a registration form.
My action create in the person controller looks like this:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(PessoaViewModel pessoaViewModel)
{
if (ModelState.IsValid)
{
pessoaViewModel = _pessoaAppService.Adicionar(pessoaViewModel);
return RedirectToAction("Index");
}
return View(pessoaViewModel);
}
Add Method in Application Layer:
public PessoaViewModel Adicionar(PessoaViewModel pessoaViewModel)
{
var pessoa = Mapper.Map<PessoaViewModel, Pessoa>(pessoaViewModel);
BeginTransaction();
var pessoaValidacao = _pessoaService.Adicionar(pessoa);
pessoaViewModel = Mapper.Map<Pessoa, PessoaViewModel>(pessoaValidacao);
Commit();
return pessoaViewModel;
}
Add to the Domain layer:
public Pessoa Adicionar(Pessoa pessoa)
{
return _pessoaRepositorio.Adicionar(pessoa);
}
Generic Repository:
public virtual TEntity Adicionar(TEntity obj)
{
return DbSet.Add(obj);
}
And I have some partials views that make the form:
<!-- todo o formulario-->
<div class="panel-body">
<div class="tab-content">
<!-- primeira aba -->
<div id="tab-1" class="tab-pane active">
@Html.Partial("_DadosCadastrais")
</div>
<!-- segunda aba -->
<div id="tab-2" class="tab-pane">
@Html.Partial("_Contato")
</div>
<!-- terceira aba -->
<div id="tab-3" class="tab-pane">
@Html.Partial("_EnderecoPessoa")
</div>
</div>
and each partial view uses a different viewModel:
contact:
@model V1.Aplicacao.ViewModels.PessoaContatoViewModel
Address:
@model V1.Aplicacao.ViewModels.EnderecoViewModel
Person:
@model V1.Aplicacao.ViewModels.PessoaViewModel
How do I use the person create method to register these three entities in the database?