AutoMapper.AutoMapperMappingException

我知道有很多关于这个主题的问题,但没有一个问题为我的问题提供了答案。 这就是为什么我要创建一个新问题。

我已经在谷歌和这里寻找答案,并找到了一些改进了我的AutoMapper设置。 (即仅创建一次映射)

我的问题是我有时会得到例外,有时候却没有。 我完全不知道如何解决它。 我一整天都在搜索,我找不到任何东西。

当我运行Mapper.AssertConfigurationIsValid();它成功。

我试图添加以下内容:

Mapper.Configuration.AllowNullDestinationValues = true; Mapper.AllowNullDestinationValues = true; 

我仍然得到错误:s

我的设置如下:

在我的global.asax文件中,我调用AutoMapperSetup.SetupAutoMapper()。

 protected void Application_Start(object sender, EventArgs e) { ... AutoMapperSetup.SetupAutoMapper(); } 

AutoMapperSetup类如下所述:(我知道我的静态构造函数正在执行。如果我放置一个断点,它就会被击中。所以代码确实被执行了)

 public static class AutoMapperSetup { static AutoMapperSetup() { #region GetPlanning Mapper.CreateMap() .ForSourceMember(x => x.ItemSelection, y => y.Ignore()) .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForSourceMember(x => x.AnomalyID, y => y.Ignore()) .ForSourceMember(x => x.Dispatcher, y => y.Ignore()) .ForSourceMember(x => x.IsDealed, y => y.Ignore()) .ForSourceMember(x => x.AnomalyDateTime, y => y.Ignore()) .ForSourceMember(x => x.Trip, y => y.Ignore()) .ForSourceMember(x => x.Place, y => y.Ignore()) .ForSourceMember(x => x.Job, y => y.Ignore()) .ForSourceMember(x => x.Product, y => y.Ignore()) .ForSourceMember(x => x.Vehicle, y => y.Ignore()) .ForSourceMember(x => x.Driver, y => y.Ignore()) .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForSourceMember(x => x.Code, y => y.Ignore()) .ForSourceMember(x => x.ID, y => y.Ignore()) .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForSourceMember(x => x.LastName, y => y.Ignore()) .ForSourceMember(x => x.FirstName, y => y.Ignore()) .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForSourceMember(x => x.LicensePlate, y => y.Ignore()) .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForSourceMember(x => x.ModificationDate, y => y.Ignore()) .ForSourceMember(x => x.ModificationID, y => y.Ignore()) .ForSourceMember(x => x.ModificationNumber, y => y.Ignore()) .ForSourceMember(x => x.EndDate, y => y.Ignore()) .ForSourceMember(x => x.ExternalSynchStatus, y => y.Ignore()) .ForSourceMember(x => x.CreatedByDriver, y => y.Ignore()) .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForSourceMember(x => x.References, y => y.Ignore()) .ForSourceMember(x => x.TypeCustom, y => y.Ignore()) .ForSourceMember(x => x.CustomNr, y => y.Ignore()) .ForSourceMember(x => x.StartTripAct, y => y.Ignore()) .ForSourceMember(x => x.StopTripAct, y => y.Ignore()) .ForSourceMember(x => x.OrderSeq, y => y.Ignore()) .ForSourceMember(x => x.Overwrite, y => y.Ignore()) .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForSourceMember(x => x.ModificationDate, y => y.Ignore()) .ForSourceMember(x => x.ModificationID, y => y.Ignore()) .ForSourceMember(x => x.ModificationNumber, y => y.Ignore()) .ForSourceMember(x => x.SessionID, y => y.Ignore()) .ForSourceMember(x => x.Export, y => y.Ignore()) .ForSourceMember(x => x.ReadDateTime, y => y.Ignore()) .ForSourceMember(x => x.Format, y => y.Ignore()) .ForSourceMember(x => x.Documents, y => y.Ignore()) .ForSourceMember(x => x.TachoActivities, y => y.Ignore()) .ForSourceMember(x => x.EndDate, y => y.Ignore()) .ForSourceMember(x => x.DriverInfo, y => y.Ignore()) .ForSourceMember(x => x.AlarmDateTime, y => y.Ignore()) .ForSourceMember(x => x.ExternalSynchStatus, y => y.Ignore()) .ForSourceMember(x => x.CreatedByDriver, y => y.Ignore()) .ForSourceMember(x => x.Comments, y => y.Ignore()) .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForSourceMember(x => x.References, y => y.Ignore()) .ForSourceMember(x => x.CustomNr, y => y.Ignore()) .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForSourceMember(x => x.ModificationDate, y => y.Ignore()) .ForSourceMember(x => x.ConsultationID, y => y.Ignore()) .ForSourceMember(x => x.Vehicle, y => y.Ignore()) .ForSourceMember(x => x.Driver, y => y.Ignore()) .ForSourceMember(x => x.Position, y => y.Ignore()) .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForSourceMember(x => x.Date, y => y.Ignore()) .ForSourceMember(x => x.InfoID, y => y.Ignore()) .ForSourceMember(x => x.Export, y => y.Ignore()) .ForSourceMember(x => x.Activity, y => y.Ignore()) .ForSourceMember(x => x.Vehicle, y => y.Ignore()) .ForSourceMember(x => x.Driver, y => y.Ignore()) .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForSourceMember(x => x.Author, y => y.Ignore()) .ForSourceMember(x => x.Export, y => y.Ignore()) .ForSourceMember(x => x.CreatedbyDriver, y => y.Ignore()) .ForSourceMember(x => x.ExternalSynchStatus, y => y.Ignore()) .ForSourceMember(x => x.Transfer, y => y.Ignore()) .ForSourceMember(x => x.CancelStatus, y => y.Ignore()) .ForSourceMember(x => x.ModificationDate, y => y.Ignore()) .ForSourceMember(x => x.ModificationID, y => y.Ignore()) .ForSourceMember(x => x.ModificationNumber, y => y.Ignore()) .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForSourceMember(x => x.ModificationDate, y => y.Ignore()) .ForSourceMember(x => x.ModificationID, y => y.Ignore()) .ForSourceMember(x => x.ModificationNumber, y => y.Ignore()) .ForSourceMember(x => x.Format, y => y.Ignore()) .ForSourceMember(x => x.ProductType, y => y.Ignore()) .ForSourceMember(x => x.Export, y => y.Ignore()) .ForSourceMember(x => x.Transfer, y => y.Ignore()) .ForSourceMember(x => x.ExternalSynchStatus, y => y.Ignore()) .ForSourceMember(x => x.CreatedByDriver, y => y.Ignore()) .ForSourceMember(x => x.TnrPlace, y => y.Ignore()) .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForSourceMember(x => x.OrderSeq, y => y.Ignore()) .ForSourceMember(x => x.DriverDisplay, y => y.Ignore()) .ForSourceMember(x => x.Comment, y => y.Ignore()) .ForSourceMember(x => x.CustomNr, y => y.Ignore()) .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForSourceMember(x => x.References, y => y.Ignore()) .ForSourceMember(x => x.CustomNr, y => y.Ignore()) .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForSourceMember(x => x.SendDateTime, y => y.Ignore()) .ForSourceMember(x => x.TransferCancelID, y => y.Ignore()) .ForSourceMember(x => x.TransferDateTime, y => y.Ignore()) .ForSourceMember(x => x.TransferID, y => y.Ignore()) .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); Mapper.CreateMap() .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull)); #endregion #region InsertUpdatePlanning Mapper.CreateMap(); Mapper.CreateMap(); Mapper.CreateMap() .ForMember(x => x.References, y => y.Ignore()) .ForMember(x => x.TypeCustom, y => y.Ignore()) .ForMember(x => x.CustomNr, y => y.Ignore()) .ForMember(x => x.StartTripAct, y => y.Ignore()) .ForMember(x => x.StopTripAct, y => y.Ignore()) .ForMember(x => x.OrderSeq, y => y.Ignore()) .ForMember(x => x.Overwrite, y => y.Ignore()); Mapper.CreateMap() .ForMember(x => x.References, y => y.Ignore()) .ForMember(x => x.TypeCustom, y => y.Ignore()) .ForMember(x => x.CustomNr, y => y.Ignore()) .ForMember(x => x.StartTripAct, y => y.Ignore()) .ForMember(x => x.StopTripAct, y => y.Ignore()) .ForMember(x => x.OrderSeq, y => y.Ignore()) .ForMember(x => x.Overwrite, y => y.Ignore()); Mapper.CreateMap() .ForMember(x => x.References, y => y.Ignore()) .ForMember(x => x.CustomNr, y => y.Ignore()); Mapper.CreateMap() .ForMember(x => x.References, y => y.Ignore()) .ForMember(x => x.CustomNr, y => y.Ignore()); Mapper.CreateMap() .ForMember(x => x.OrderSeq, y => y.Ignore()) .ForMember(x => x.DriverDisplay, y => y.Ignore()) .ForMember(x => x.Comment, y => y.Ignore()) .ForMember(x => x.CustomNr, y => y.Ignore()); Mapper.CreateMap() .ForMember(x => x.OrderSeq, y => y.Ignore()) .ForMember(x => x.DriverDisplay, y => y.Ignore()) .ForMember(x => x.Comment, y => y.Ignore()) .ForMember(x => x.CustomNr, y => y.Ignore()); Mapper.CreateMap() .ForMember(x => x.References, y => y.Ignore()) .ForMember(x => x.CustomNr, y => y.Ignore()); Mapper.CreateMap() .ForMember(x => x.References, y => y.Ignore()) .ForMember(x => x.CustomNr, y => y.Ignore()); Mapper.CreateMap(); Mapper.CreateMap(); Mapper.CreateMap(); Mapper.CreateMap(); Mapper.CreateMap(); Mapper.CreateMap(); Mapper.CreateMap(); Mapper.CreateMap(); Mapper.CreateMap(); Mapper.CreateMap(); Mapper.CreateMap(); Mapper.CreateMap(); Mapper.CreateMap(); Mapper.CreateMap(); Mapper.CreateMap(); Mapper.CreateMap(); Mapper.CreateMap(); Mapper.CreateMap(); Mapper.CreateMap(); Mapper.CreateMap(); Mapper.CreateMap(); Mapper.CreateMap(); Mapper.CreateMap(); Mapper.CreateMap(); Mapper.CreateMap(); Mapper.CreateMap(); #endregion #region InsertUpdateSettings Mapper.CreateMap(); #endregion #region Cancel Planning Mapper.CreateMap(); #endregion } public static void SetupAutoMapper() { } } 

当我启动WebServices时会调用它。 下一步是从DB获取数据并将其映射到我的DTO:

 FWSGetPlanningResult resultToReturn = Mapper.Map(result); 

执行上面的代码行给了我映射exception错误。 下面是例外的细节:

 AutoMapper.AutoMapperMappingException occurred HResult=-2146233088 Message=Missing type map configuration or unsupported mapping. Mapping types: GetPlanningResult_v3 -> FWSGetPlanningResult BusinessFramework.Data.Planning.Result.GetPlanningResult_v3 -> BusinessFramework.Data.Planning.FWSGetPlanningResult Destination path: FWSGetPlanningResult Source value: BusinessFramework.Data.Planning.Result.GetPlanningResult_v3 Source=AutoMapper StackTrace: at Desktop.Web.Fleet.DBFactory.ConvertFromGetPlanningResult(GetPlanningResult_v3 result) in c:\TFSProjects\Tx-Framework\Framework\Main\Source\BusinessFramework\Services.Fleet\Classes\DB\Factories\Planning.cs:line 593 InnerException: 

我希望有人可以给我解决方案..正如你可以看到对象的数量..我并不急于开始手动映射所有内容。

提前致谢!

我的问题已得到解决。 问题如下:

在我们的解决方案中,我们最近开始与IOC合作。 有人使用AutoMapperTypeAdapter创建了一个TypeAdapter作为引用实体。

在我们的应用程序中打开或输入某个模块时,Automapper将再次初始化,并且我在global.asax中创建的映射被删除。

修改我的代码以使用TypeAdapter后,我的问题得到了解决。

感谢每一个试图帮助我的人!

Interesting Posts