using System.Collections.Generic;
public static void Main()
DataAccess.MapperBootstrapper.Configure();
var projMng = new BusinessLogic.ProjectManager();
FiddleHelper.WriteTable(projMng.GetProjects());
public Guid ID { get; set; }
public string FullName { get; set; }
public class ProjectManager
public List<Model.Project> GetProjects()
var projectDataAccessor = new DataAccess.ProjectDataAccessor();
return projectDataAccessor.GetProjects();
public class ProjectEntity
public Guid ID { get; set; }
public string Area { get; set; }
public string Name { get; set; }
public class ProjectDataAccessor
public List<Model.Project> GetProjects()
var dbCollection = new []
new ProjectEntity { ID = Guid.NewGuid(), Area = "Music", Name = "Foo Fighters" },
new ProjectEntity { ID = Guid.NewGuid(), Area = "Social", Name = "Bar bar" }
return MapperBootstrapper.Instance.Map<List<Model.Project>>(dbCollection);
public class ProjectProfile : Profile
CreateMap<ProjectEntity, Model.Project>()
opt => opt.MapFrom(src => $"{src.Area}\\{src.Name}"));
public static class MapperBootstrapper
private static IMapper _instance;
internal static IMapper Instance => _instance;
public static void Configure()
throw new InvalidOperationException("Already configured");
var config = new MapperConfiguration(
cfg.AddProfile<ProjectProfile>();
_instance = config.CreateMapper();