Я использую пакет numa Automapper: AutoMapper.Extensions.Microsoft.DependencyInjection для основного приложения asp.net.
Вот мой объект домена:
Laguages.cs
public class Languages
{
public string id
{
get;
set;
}
public int LanguageId
{
get;
set;
}
public string Name
{
get;
set;
}
public string NameinEnglish
{
get;
set;
}
public string LocalisationIdentifier
{
get;
set;
}
public string Locale
{
get;
set;
}
public bool RightToLeft
{
get;
set;
}
}
Вот мой объект DTO:
LanguageDTO.cs
public class LanguageDTO
{
public string id
{
get;
set;
}
public int LanguageId
{
get;
set;
}
public string Name
{
get;
set;
}
public string NameinEnglish
{
get;
set;
}
public string LocalisationIdentifier
{
get;
set;
}
public string Locale
{
get;
set;
}
public bool RightToLeft
{
get;
set;
}
}
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
// Auto Mapper Configurations
var mappingConfig = new MapperConfiguration(mc =>
{
mc.AddProfile(new MappingProfile());
}
);
IMapper mapper = mappingConfig.CreateMapper();
services.AddSingleton(mapper);
}
MappingProfile.cs
public class MappingProfile : Profile
{
public MappingProfile()
{
CreateMap<Languages, LanguageDTO>();
CreateMap<List<Languages>, List<LanguageDTO>>();
}
}
CommonService.cs
public async Task<LanguageDTO> GetLanguagesByFilterAsync(string[] filters)
{
try
{
if (filters.Length > 0)
{
var languages = new List<Languages>();
var s = filters.First(); // requred by EF
var query = _dbContext.Languages.Where(v => v.LocalisationIdentifier.Contains(s));
foreach (var item in filters.Where(v => v != filters[0]).Distinct())
{
query = query.Union(_dbContext.Languages.Where(v => v.LocalisationIdentifier.Contains(item)));
}
languages = await query.ToListAsync();
var languagesList = _mapper.Map<List<Languages>, List<LanguageDTO>>(languages);
foreach (var filter in filters)
{
var lang = languagesList.FirstOrDefault(l => l.LocalisationIdentifier.Split(',').Any(i => i.Equals(filter, StringComparison.OrdinalIgnoreCase)));
if (lang != null)
{
lang.LocalisationIdentifier = lang.Locale ?? filter;
return lang;
}
}
}
return null;
}
catch (Exception ex)
{
return null;
}
}
Здесь, в вышеупомянутом методепри отладке я всегда получаю значение счетчика languagesList 0. Короче говоря, данные не копируются с исходных языков.
Может кто-нибудь помочь мне решить эту проблему