C# 找不到映射

C# 找不到映射,c#,asp.net,asp.net-mvc,automapper,C#,Asp.net,Asp.net Mvc,Automapper,我一直在努力使用自动映射和嵌套对象。我得到以下错误: Missing type map configuration or unsupported mapping. AdminSchema -> Schema 但这对我来说并不正确,因为我确实配置了以下映射: Mapper.CreateMap<Schema, AdminSchema>().ReverseMap(); Mapper.CreateMap().ReverseMap(); 它应该映射以下模型: public clas

我一直在努力使用自动映射和嵌套对象。我得到以下错误:

Missing type map configuration or unsupported mapping.
AdminSchema -> Schema
但这对我来说并不正确,因为我确实配置了以下映射:

Mapper.CreateMap<Schema, AdminSchema>().ReverseMap();
Mapper.CreateMap().ReverseMap();
它应该映射以下模型:

public class AdminSchema
{
    [Required]
    [Display(Name = "Opeenvolgende weken")]
    public int ConsecutiveWeeks { get; set; }

    public List<AdminWorkDay> WorkDays { get; set; }

    public bool Delete { get; set; }
}

public class AdminWorkDay
{
    public int DayOfWeekNumber { get; set; }
    public string StartTime { get; set; }
    public string EndTime { get; set; }
    public TimeSpan BreakTime { get; set; }
    public bool Delete { get; set; }
}
公共类AdminSchema
{
[必需]
[显示(Name=“Opeenvolgende weken”)]
公共整数连续周{get;set;}
公共列表工作日{get;set;}
公共布尔删除{get;set;}
}
公共课管理工作日
{
public int DayOfWeekNumber{get;set;}
公共字符串开始时间{get;set;}
公共字符串结束时间{get;set;}
公共时间间隔中断时间{get;set;}
公共布尔删除{get;set;}
}

公共类架构
{
公共int Id{get;set;}
公共整数连续周{get;set;}
公共列表工作日{get;set;}
}
公课工作日
{
公共int Id{get;set;}
public int DayOfWeekNumber{get;set;}
公共日期时间开始时间{get;set;}
公共日期时间结束时间{get;set;}
公共时间间隔中断时间{get;set;}
}
对于字符串到日期时间的映射,我有以下代码:

Mapper.CreateMap<string, DateTime>().ConvertUsing<StringToDateTimeConverter>();

public class StringToDateTimeConverter : ITypeConverter<string, DateTime>
{
    public DateTime Convert(ResolutionContext context)
    {
        var sourceDt = context.SourceValue;
        DateTime targetDt;

        if (sourceDt == null)
        {
            return default(DateTime);
        }
        return DateTime.TryParse(sourceDt.ToString(), out targetDt) ? targetDt : default(DateTime);
    }
}
Mapper.CreateMap().ConvertUsing();
公共类StringToDateTimeConverter:ITypeConverter
{
公共日期时间转换(ResolutionContext上下文)
{
var sourceDt=context.SourceValue;
日期时间目标dt;
if(sourceDt==null)
{
返回默认值(日期时间);
}
return DateTime.TryParse(sourceDt.ToString(),out targetDt)?targetDt:default(DateTime);
}
}
下面是映射的实现:

var workPeriod = new WorkPeriod {
            Schemas = Mapper.Map<List<AdminSchema>, List<Schema>>(workPeriodVm.Schemas)
        };
var workPeriod=新的工作周期{
Schemas=Mapper.Map(workPeriodVm.Schemas)
};

如果有人知道为什么找不到我的地图,请告诉我。非常感谢。其他映射确实起作用,因此automapper的配置通常是正确的。

显然,TSource和TDestation中的
工作日类型不相等,而您必须在automapper Nuget包中将TSource和TDestation类型设置为相等。

例如,将
WorkDays
属性的TSource和TDestination类型更改为
AdminWorkDay
,您会发现它工作正常。

为什么要使用ReverseMap?因为对于详细信息页面,我必须以另一种方式映射,或者使用ReverseMap是一种不好的做法?我使用它-如果您从指定类型映射到指定类型,这是必要的。你有
WorkDay
AdminWorkDay
的映射吗?@Ric,是的,我有:Mapper.CreateMap().ReverseMap();我测试了你的代码,它在这里工作。你确定你没有遗漏什么吗?您使用的AutoMapper版本是什么?
var workPeriod = new WorkPeriod {
            Schemas = Mapper.Map<List<AdminSchema>, List<Schema>>(workPeriodVm.Schemas)
        };