gpt4 book ai didi

asp.net-mvc-3 - 如何调试AutoMapper "Missing type map configuration or unsupported mapping"错误

转载 作者:行者123 更新时间:2023-12-02 07:37:48 26 4
gpt4 key购买 nike

我已经看到很多发生此错误的例子,原因多种多样,并且我已经检查了我能看到的所有原因,但我仍然收到错误,所以我想知道是否有人可以提供一些信息关于这个错误的实际含义,所以我可以尝试找出原因。这是一些代码:

Controller :

    [HttpPost]
public ActionResult Edit(ProfileViewModel model)
{
if (ModelState.IsValid)
{
var person = new UserAttribute();

person = Mapper.Map<ProfileViewModel, UserAttribute>(model);

db.UserAttribute.Add(person);
db.SaveChanges();

}

查看模型

public class ProfileViewModel
{

[Display(Name = "First Name")]
[StringLength(20)]
[Required]
public string FirstName { get; set; }

[Display(Name = "Last Name")]
[StringLength(30)]
[Required]
public string LastName { get; set; }

[Display(Name = "Gender")]
[Required]
public string Gender { get; set; }

[Display(Name = "Date of Birth")]
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
public DateTime DOB { get; set; }

[Display(Name = "Hair Color")]
public string HairColor { get; set; }

[Display(Name = "Eye Color")]
public string EyeColor { get; set; }

[Display(Name = "Body Type")]
public string Weight { get; set; }

[Display(Name = "Height")]
public string HeightFeet { get; set; }

public string HeightInches { get; set; }

public int UserId { get; set; }

public IEnumerable<SelectListItem> WeightList { get; set; }
public IEnumerable<SelectListItem> EyeColorList { get; set; }
public IEnumerable<SelectListItem> HairColorList { get; set; }
public IEnumerable<SelectListItem> HeightFeetList { get; set; }
public IEnumerable<SelectListItem> HeightInchesList { get; set; }
public IEnumerable<SelectListItem> GenderList { get; set; }

}

用户属性模型:

    public int ProfileId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Gender { get; set; }
public System.DateTime DOB { get; set; }
public string HairColor { get; set; }
public string EyeColor { get; set; }
public string HeightFeet { get; set; }
public string Weight { get; set; }
public int UserId { get; set; }
public string HeightInches { get; set; }

映射配置:

public class AutoMapperConfiguration
{
public static void Configure()
{
Mapper.Initialize(x => x.AddProfile<ViewToDomainMapProfile>());
Mapper.Initialize(x => x.AddProfile<DomainToViewMapProfile>());
}
}

public class ViewToDomainMapProfile : Profile
{
public override string ProfileName
{
get { return "ViewToDomainMapProfile"; }
}

protected override void Configure()
{
Mapper.CreateMap<ProfileViewModel, UserAttribute>()
.ForSourceMember(x => x.GenderList, y => y.Ignore())
.ForSourceMember(x => x.HairColorList, y => y.Ignore())
.ForSourceMember(x => x.EyeColorList, y => y.Ignore())
.ForSourceMember(x => x.WeightList, y => y.Ignore())
.ForSourceMember(x => x.HeightFeetList, y => y.Ignore())
.ForSourceMember(x => x.HeightInchesList, y => y.Ignore());
}
}

并在全局asax中调用配置:

        AutoMapperConfiguration.Configure();

最佳答案

使用Mapper.AssertConfigurationIsValid();会产生以下异常:

AutoMapper.AutoMapperConfigurationException : 
Unmapped members were found. Review the types and members below.
Add a custom mapping expression, ignore, add a custom resolver, or modify the source/destination type
==============================================================================================
ProfileViewModel -> UserAttribute (Destination member list)
----------------------------------------------------------------------------------------------
ProfileId

因此,您需要为 ProfileId 添加映射。

总的来说,在单元测试中(你有它们,对吧?)或在映射器配置之后使用 Mapper.AssertConfigurationIsValid(); 是一个很好的做法。它将显示此类错误配置的详细信息。

关于asp.net-mvc-3 - 如何调试AutoMapper "Missing type map configuration or unsupported mapping"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17005594/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com