c# - 使用 UseValue 将自定义值传递给 Automapper
问题描述
我在控制器中使用 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);
}
somethingDetails.SomethingSpecific 值在第一次调用 Details 后不会改变。我看到一对夫妇从以前版本的 Automapper 中解决了这个问题,但我认为 UseValue 只是为了这个目的。我错了吗?
解决方案
我根据你的代码做了一个演示,它工作。尝试在以下代码中将“IdSomething”更改为“Id”
var details = await _context.Details.OrderByDescending(o => o.LogDate).FirstOrDefaultAsync(m => m.IdSomething == id);