Передать пользовательское значение в Automapper с помощью UseValue - PullRequest
0 голосов
/ 05 ноября 2018

Я использую Automapper в контроллере, но данные не обновляются после первого вызова.

public class Somethings
{
    public int Id {get; set;}
    public string Info1 {get; set;}
    public string Info2  {get; set;}
}

public class Details
{
    public int Id {get; set;}
    public string Detail1 {get; set;}
    public string Details2  {get; set;}
    public DateTime LogDate {get; set;}
}   

public class SomethingDetails : Somethings
{
    public string SomethingSpecific {get; set;}
}   

public async Task<IActionResult> Details(int? id)
{
    var somethings = await _context.Somethings
        .SingleOrDefaultAsync(m => m.Id == id);

    var details = await _context.Details.OrderByDescending(o => o.LogDate).FirstOrDefaultAsync(m => m.IdSomething == id);

    var somethingSpecific = details.Detail1;

    SomethingDetails somethingDetails = _mapper.Map<Somethings, SomethingDetails>(somethings, opt => opt.ConfigureMap().ForMember(d => d.SomethingSpecific, a => a.UseValue(somethingSpecific)));

    return View(somethingDetails);
}

thingDetails.SomethingSpecific значение не изменяется после первого вызова Details. Я видел пару, которая обошла эту проблему из предыдущих версий Automapper, но я подумал, что UseValue как раз для этой цели. Я не прав?

1 Ответ

0 голосов
/ 06 ноября 2018

Я сделал демо на основе вашего кода, это сработало. Попробуйте изменить «IdSomething» на «Id» в следующем коде

var details = await _context.Details.OrderByDescending(o => o.LogDate).FirstOrDefaultAsync(m => m.IdSomething == id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...