Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 自动映射缺少映射配置_C#_.net_Automapper - Fatal编程技术网

C# 自动映射缺少映射配置

C# 自动映射缺少映射配置,c#,.net,automapper,C#,.net,Automapper,我有一个Attendee类和一个AttendeeViewModel public class AttendeeViewModel { public int Id { get; set; } [Required] [EmailAddress] public string Email { get; set; } [Required] [Display(Name = "First Name")] public string FirstName

我有一个Attendee类和一个AttendeeViewModel

public class AttendeeViewModel
{

    public int Id { get; set; }
    [Required]
    [EmailAddress]
    public string Email { get; set; }
    [Required]
    [Display(Name = "First Name")]
    public string FirstName { get; set; }
    [Required]
    [Display(Name = "Last Name")]
    public string LastName { get; set; }
    public int FEventId { get; set; }

    public string DisplayName
    {
        get { return string.Format("{0}, {1}", FirstName, LastName); }
    }
}
当我从AttendeeViewModel映射时,Attendee模型上的datetime字段将设置为默认的.NET datetime,而不是Attendee模型中已经存在的值

这是我的模型

public class AttendeeViewModel
{

    public int Id { get; set; }
    [Required]
    [EmailAddress]
    public string Email { get; set; }
    [Required]
    [Display(Name = "First Name")]
    public string FirstName { get; set; }
    [Required]
    [Display(Name = "Last Name")]
    public string LastName { get; set; }
    public int FEventId { get; set; }

    public string DisplayName
    {
        get { return string.Format("{0}, {1}", FirstName, LastName); }
    }
}
这是我的基本模型

public class Attendee
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public  int Id { get; set; }
    [Required]
    public  string Email { get; set; }
    [Required]
    public  string FirstName { get; set; }
    [Required]
    public  string LastName { get; set; }
    public DateTime CreatedAt { get; set; }

    public bool IsActive { get; set; }


    public int FEventId { get; set; }

    public virtual ApplicationUser CreatedBy { get; set; }

    public virtual FEvent FEvent { get; set; }

    public ICollection<ProjectPledge> ProjectPledges { get; set; } 

}
映射失败,导致此异常

Missing type map configuration or unsupported mapping.

Mapping types:
AttendeeViewModel -> DateTime
MyProject.Web.ViewModels.AttendeeViewModel -> System.DateTime

Destination path:
Attendee.CreatedAt.CreatedAt

Source value:
MyProject.Web.ViewModels.AttendeeViewModel

关于如何解决这个问题有什么想法吗?

您是否尝试过删除“.ForMember”部分,让AutoMapper忽略它?为了更好地帮助您,请查看这两种模型以进行比较

更新:在看了你的模型后,我建议以下方法可以解决你的问题

Mapper.CreateMap <attendeeviewmodel, attendee>.ForMember (x => x.CreatedAt, opt => opt.MapFrom (src => datetime.utcnow));
Mapper.CreateMap.ForMember(x=>x.CreatedAt,opt=>opt.MapFrom(src=>datetime.utcnow));

如果要映射到现有对象,则需要使用获取现有目标的重载:

Mapper.Map<Source, Destination>(source, destination);
Mapper.Map(源、目标);

这应该可以解决问题。

这里有一个技巧,在
Configure()
的末尾添加一个
Mapper.AssertConfigurationsValid()
,这将导致在
Configure()
中抛出异常,而不是等到第一次调用
Map
时才抛出异常。(不知道如何解决您的问题,对不起:()是的,我一直在使用它,但无论如何,谢谢你仍然将目标数据时间设置为默认值。今晚稍后将发布模型。你对问题进行了排序吗?对不起,我应该在我的问题中更明确一点。我希望映射的值是attendee对象的原始值,而不是当前时间。你尝试添加了吗最后是“.IgnoreAllUnmapped()”吗?
Mapper.CreateMap <attendeeviewmodel, attendee>.ForMember (x => x.CreatedAt, opt => opt.MapFrom (src => datetime.utcnow));
Mapper.Map<Source, Destination>(source, destination);