C# 使用UseValue将自定义值传递给Automapper

C# 使用UseValue将自定义值传递给Automapper,c#,asp.net-core,automapper,C#,Asp.net Core,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

我在控制器中使用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);
}
公共类某物
{
公共int Id{get;set;}
公共字符串Info1{get;set;}
公共字符串Info2{get;set;}
}
公开课详情
{
公共int Id{get;set;}
公共字符串Detail1{get;set;}
公共字符串详细信息2{get;set;}
公共日期时间日志日期{get;set;}
}   
公共类something详细信息:something
{
公共字符串SomethingSpecific{get;set;}
}   
公共异步任务详细信息(int?id)
{
var somethings=wait_context.somethings
.SingleOrDefaultAsync(m=>m.Id==Id);
var details=wait _context.details.OrderByDescending(o=>o.LogDate).FirstOrDefaultAsync(m=>m.IdSomething==id);
var somethingSpecific=details.Detail1;
SomethingDetails SomethingDetails=_mapper.Map(somethings,opt=>opt.ConfigureMap().formMember(d=>d.SomethingSpecific,a=>a.UseValue(SomethingSpecific));
返回视图(某些细节);
}

somethingDetails.SomethingSpecific值在第一次调用Details后不会更改。我看到一些人从以前版本的Automapper中讨论这个问题,但我认为UseValue就是为了这个目的。我错了吗?

我根据你的代码做了一个演示,效果不错。 尝试在以下代码中将“IdSomething”更改为“Id”

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

你错了,配置是静态的。但请看。@LucianBargaoanu如果我这样做,我会得到一个“未映射的成员被发现”异常。@Diomedes您是如何配置映射配置文件的?您能展示一下您的映射配置文件类吗?