AutoMapper.AutoMapperMappingException

假装没事ソ 提交于 2019-12-10 10:18:51

问题


I know a lot of questions have been asked regarding this topic, but none of them provided an answer for my problem. That's why I'm creating a new question.

I've looked on google and here for answers and have found some which have improved my setup of AutoMapper. (i.e. only creating your mappings only once)

My problem is that I sometimes get the exception and sometimes I don't. And I have absolutely no idea how to solve it. I've been searching a whole day now and I can't find anything.

When I run Mapper.AssertConfigurationIsValid();it succeeds.

I've tried to add the following:

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

And still I get errors :s

My setup is as follows:

In my global.asax file I call AutoMapperSetup.SetupAutoMapper().

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

The AutoMapperSetup class is described below: (I do know that my static constructor is getting executed. If I put a breakpoint, it's getting hit. So that code does get executed)

public static class AutoMapperSetup
{

static AutoMapperSetup()
    {
        #region GetPlanning
        Mapper.CreateMap<GetPlanningResult_v3, FWSGetPlanningResult>()
            .ForSourceMember(x => x.ItemSelection, y => y.Ignore())
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));
        Mapper.CreateMap<ExecutionResult, FWSExecutionResult>()
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));
        Mapper.CreateMap<ExecutionResult.Error, FWSExecutionResult.FWSError>()
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));
        Mapper.CreateMap<ExecutionResult.Warning, FWSExecutionResult.FWSWarning>()
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));
        Mapper.CreateMap<GetPlanningHistoricalSelectionResult_v3, FWSGetPlanningHistoricalSelectionResult>()
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));
        Mapper.CreateMap<PlanningResult_v3, FWSPlanningResult>()
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));
        Mapper.CreateMap<Anomaly, FWSAnomaly>()
            .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<CommentHistoricalResult, FWSCommentHistoricalResult>()
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));

        Mapper.CreateMap<IdentifierResult, FWSIdentifierResult>()
            .ForSourceMember(x => x.Code, y => y.Ignore())
            .ForSourceMember(x => x.ID, y => y.Ignore())
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));
        Mapper.CreateMap<IdentifierPerson, FWSIdentifierPerson>()
            .ForSourceMember(x => x.LastName, y => y.Ignore())
            .ForSourceMember(x => x.FirstName, y => y.Ignore())
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));
        Mapper.CreateMap<IdentifierVehicleResult, FWSIdentifierVehicleResult>()
            .ForSourceMember(x => x.LicensePlate, y => y.Ignore())
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));
        Mapper.CreateMap<TripResult_v3, FWSTripResult>()
            .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<Trip, FWSTrip>()
            .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<PlaceResult_v2, FWSPlaceResult>()
            .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<Place, FWSPlace>()
            .ForSourceMember(x => x.References, y => y.Ignore())
            .ForSourceMember(x => x.CustomNr, y => y.Ignore())
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));
        Mapper.CreateMap<Consultation, FWSConsultation>()
            .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<ExtraInfo, FWSExtraInfo>()
            .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<Activity, FWSActivity>()
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));
        Mapper.CreateMap<PlaceIdentifier, FWSPlaceIdentifier>()
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));
        Mapper.CreateMap<TripIdentifier, FWSTripIdentifier>()
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));

        Mapper.CreateMap<Position, FWSPosition>()
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));
        Mapper.CreateMap<PlanningItem, FWSPlanningItem>()
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));
        Mapper.CreateMap<GeofencingResult, FWSGeofencingResult>()
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));
        Mapper.CreateMap<Geofencing, FWSGeofencing>()
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));
        Mapper.CreateMap<Comment, FWSComment>()
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));
        Mapper.CreateMap<JobResult_v2, FWSJobResult>()
            .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<ProductResult_v2, FWSProductResult>()
            .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<Job, FWSJob>()
            .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<Product, FWSProduct>()
            .ForSourceMember(x => x.References, y => y.Ignore())
            .ForSourceMember(x => x.CustomNr, y => y.Ignore())
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));
        Mapper.CreateMap<ViaRouteItemResult, FWSViaRouteItemResult>()
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));
        Mapper.CreateMap<Customer, FWSCustomer>()
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));
        Mapper.CreateMap<Shipper, FWSShipper>()
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));
        Mapper.CreateMap<ActivityPlace, FWSActivityPlace>()
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));
        Mapper.CreateMap<Transfer, FWSTransfer>()
            .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<enumPlanningStatus, FWSEnumPlanningStatus>()
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));
        Mapper.CreateMap<enumSynchronisationStatus, FWSEnumSynchronisationStatus>()
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));
        Mapper.CreateMap<enumCancelStatus, FWSEnumCancelStatus>()
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));
        Mapper.CreateMap<enumTransferStatus, FWSEnumTransferStatus>()
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));
        Mapper.CreateMap<enumGeoFencingEventType, FWSenumGeoFencingEventType>()
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));
        Mapper.CreateMap<enumPositionFormat, FWSenumPositionFormat>()
            .ForAllMembers(op => op.Condition(x => !x.IsSourceValueNull));
        #endregion

        #region InsertUpdatePlanning
        Mapper.CreateMap<FWSPlanningInsert, PlanningInsert>();
        Mapper.CreateMap<FWSPlanning, Planning>();
        Mapper.CreateMap<FWSTripInsert, TripInsert>()
            .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<FWSTrip, Trip>()
            .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<FWSPlaceInsert, PlaceInsert>()
            .ForMember(x => x.References, y => y.Ignore())
            .ForMember(x => x.CustomNr, y => y.Ignore());
        Mapper.CreateMap<FWSPlace, Place>()
            .ForMember(x => x.References, y => y.Ignore())
            .ForMember(x => x.CustomNr, y => y.Ignore());
        Mapper.CreateMap<FWSJobInsert, JobInsert>()
            .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<FWSJob, Job>()
            .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<FWSProductInsert, ProductInsert>()
            .ForMember(x => x.References, y => y.Ignore())
            .ForMember(x => x.CustomNr, y => y.Ignore());
        Mapper.CreateMap<FWSProduct, Product>()
            .ForMember(x => x.References, y => y.Ignore())
            .ForMember(x => x.CustomNr, y => y.Ignore());
        Mapper.CreateMap<FWSIdentifier, Identifier>();
        Mapper.CreateMap<FWSIdentifierVehicle, IdentifierVehicle>();
        Mapper.CreateMap<FWSIdentifierSite, IdentifierSite>();
        Mapper.CreateMap<FWSenumIdentifierType, enumIdentifierType>();
        Mapper.CreateMap<FWSenumIdentifierVehicleType, enumIdentifierVehicleType>();
        Mapper.CreateMap<FWSenumIdentifierSiteType, enumIdentifierSiteType>();
        Mapper.CreateMap<FWSReference, Reference>();
        Mapper.CreateMap<FWSActivity, Activity>();
        Mapper.CreateMap<FWSGeofencing, Geofencing>();
        Mapper.CreateMap<FWSPosition, Position>();
        Mapper.CreateMap<FWSIdentifierViaRoute, IdentifierViaRoute>();
        Mapper.CreateMap<FWSViaPointInsert, ViaPointInsert>();
        Mapper.CreateMap<FWSViaPoint, BusinessFramework.Data.ViaRoute.ViaPoint>();
        Mapper.CreateMap<FWSViaRouteInsert, ViaRouteInsert>();
        Mapper.CreateMap<FWSViaRoute, ViaRoute>();
        Mapper.CreateMap<FWSActivityPlace, ActivityPlace>();
        Mapper.CreateMap<FWSenumGeoFencingEventType, enumGeoFencingEventType>();
        Mapper.CreateMap<FWSenumPositionFormat, enumPositionFormat>();
        Mapper.CreateMap<FWSReferenceProduct, ReferenceProduct>();
        Mapper.CreateMap<FWSenumIdentifierViaRouteType, enumIdentifierViaRouteType>();
        Mapper.CreateMap<FWSenumViaRouteType, enumViaRouteType>();
        Mapper.CreateMap<FWSenumViaRoutePlanningType, enumViaRoutePlanningType>();
        Mapper.CreateMap<FWSIdentifierAddress, IdentifierAddress>();
        Mapper.CreateMap<FWSenumIdentifierAddressType, enumIdentifierAddressType>();
        Mapper.CreateMap<FWSCustomer, Customer>();
        Mapper.CreateMap<FWSShipper, Shipper>();
        #endregion

        #region InsertUpdateSettings
        Mapper.CreateMap<FWSUpdateInsertSettings, UpdateInsertSettings>();
        #endregion

        #region Cancel Planning
        Mapper.CreateMap<FWSPlanningItemSelection, PlanningItemSelection>();
        #endregion
    }

public static void SetupAutoMapper()
    {

    }
}

This gets called when I start my WebServices. The next step is to get the data from DB and map this to my DTO:

FWSGetPlanningResult resultToReturn = Mapper.Map<GetPlanningResult_v3, FWSGetPlanningResult>(result);

Executing the above line of code is giving me the mapping exception error. Below the details of the 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: 

I hope that someone might give me the solution.. As you can see on the number of objects.. I'm not that eager to start mapping everything manually.

Thanks in advance!


回答1:


My problem has been fixed. The problem was the following:

In our solution we recently started working with IOC. Someone created a TypeAdapter with AutoMapperTypeAdapter as referenced entity.

When in our application a certain module was open or entered, Automapper was being initialized again and my mappings created in global.asax were removed.

After modifying my code to also work using the TypeAdapter, my problem was fixed.

Thanks for everying trying to help me!



来源:https://stackoverflow.com/questions/14238273/automapper-automappermappingexception

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!