Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Índice

Visão Geral

Quando trabalhamos em Ao trabalhar com 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).objetos entre camadas de aplicação, domínio e infraestrutura.

O TNF traz facilitadores para 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 uso dessa funcionalidade instale o pacote via nuget Tnf.AutoMapper disponível em nosso package sourcehttps://www.myget.org/F/tnf/api/v3/index.json

Utilização

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

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

...

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

Bloco de código
languagec#
firstline1
titleAutoMapper
linenumberstrue
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), sugerimos que isso pode ser seja feito através da estrutura de módulos do TNFdo seu módulo (TnfModule).

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 mapeadasPostInitialize de seus módulo realize seus mapeamentos.

Mapeamento Usando Atributos e Métodos de Extensão

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

...

o atributo

...

AutoMapAttribute para mapeamento bidirecional,

...

AutoMapFromAttribute e

...

AutoMapToAttribute para mapeamento de um sentido apenas.

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

Bloco de código
languagec#
firstline1
titleAutoMapAttribute
linenumberstrue
// 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);