Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

« Anterior Versão 5 Próxima »

Visão Geral

Quando trabalhamos em um modelo multicamada precisamos em muitos cenários realizar o mapeamento de nossa entidade de infraestrutura (utilizada para representar a tabela do Entity Framework, o documento em um banco NoSQL, etc).

Para isso o TNF tráz facilitadores na hora de mapear objetos e entidades para estruturas de DTO utilizando o AutoMapper.

Para obter suporte ao AutoMapper instale o pacote via nuget Tnf.AutoMapper disponível em nosso package source: https://www.myget.org/F/tnf/api/v3/index.json

Para utilizar os mapeamentos via atributos lembre-se de colocar o modulo TnfAutoMapperModule como dependência em sua aplicação.

Para fazer isso use o atributo "DependsOn" para informar a dependência em seu módulo:

SampleModule.cs
[DependsOn(
	typeof(TnfAutoMapperModule))]
public class AppModule : TnfModule
{
	public override void PreInitialize()
	{
		base.PreInitialize();
	}

	public override void Initialize()
	{
		IocManager.RegisterAssemblyByConvention(typeof(AppModule).GetAssembly());
	}
}

Mapeamento Manual entre Entidades

O exemplo abaixo exibe uma forma da utilização da estrutura do AutoMapper:

AutoMapper
public SearchPeopleOutput SearchPeople(SearchPeopleInput input)
{
    var peopleEntityList = _personRepository.GetAllList(person => person.Name.Contains(input.SearchedName));
    return new SearchPeopleOutput()
	{ 
		People = Mapper.Map<List<PersonDto>>(peopleEntityList) 
	};
}

Como o AutoMapper precisa ser configurado (definidos os mapeamentos), isso pode ser feito através da estrutura de módulos do TNF.

No método PostInitialize de um modulo criado para um assembly que realize o uso do AutoMapper, você pode configurar as entidades que serão mapeadas

Mapeamento Usando Atributos e Métodos de Extensão

No TNF estão disponíveis atributos e métodos de extensão para definir mapeamentos.

Em seguida, use o atributo AutoMap para mapeamento bidirecional, AutoMapFrom e AutoMapTo para mapeamento de um sentido apenas.

O exemplo abaixo contém um mapeamento bidirecional com utilização via métodos de extensão:

AutoMapAttribute
// two-way mapping
[AutoMap(typeof(MyClass2))]
public class MyClass1
{
    public string TestProp { get; set; }
}

public class MyClass2
{
    public string TestProp { get; set; }
}
 
// extensions methods mapping
var obj1 = new MyClass1 { TestProp = "Test value" };
var obj2 = obj1.MapTo<MyClass2>();
 
// extensions methods mapping
var obj1 = new MyClass1 { TestProp = "Test value" };
var obj2 = new MyClass2();
obj1.MapTo(obj2);
  • Sem rótulos