使用自动映射器C#映射时的问题

问题描述 投票:2回答:1

必须将字段中的某些更改从旧数据库传输到新数据库。尝试使用AutoMapper进行相同的操作。下面是代码

var crudCommonV1 = new HAES.EDMS.DAL.CRUD.CRUDCommon<HAES.EDMS.DAL.Address>();
var addressV1List = crudCommonV1.GetAll();
var config = new MapperConfiguration(cfg => {
    cfg.AllowNullCollections = true;
    cfg.AllowNullDestinationValues = true;
    cfg.CreateMap<HAES.EDMS.DAL.Address, HAES.EDMS.V2.DAL.Address>()
        .ForMember(dest => dest.ForeignAddress, act => act.MapFrom(src => src.OverrideAddress));
});
//automapper
IMapper mapper = config.CreateMapper();
var addressListMappedFromV2ToV1 = mapper.Map<IEnumerable<HAES.EDMS.DAL.Address>, IEnumerable<HAES.EDMS.V2.DAL.Address>>(addressV1List);

但是会引发异常

AutoMapper.AutoMapperMappingException

HResult = 0x80131500

Message =错误映射类型。

Source =

StackTrace:

内部例外1:

AutoMapperMappingException:错误映射类型。

内部例外2:

AutoMapperMappingException:缺少类型映射配置或不支持的映射。

任何想法在这里做错了什么?

编辑:

型号:HAES.EDMS.DAL.V2.Address

public System.Guid Id { get; set; }
public System.Guid CollegeId { get; set; }
public short TypeId { get; set; }
public Nullable<System.Guid> PersonId { get; set; }
public string Pincode { get; set; }
public string AddressLine1 { get; set; }
public string AddressLine2 { get; set; }
public string City { get; set; }
public string State { get; set; }
public string ForeignAddress { get; set; }
public System.DateTime CreatedOn { get; set; }
public string CreatedBy { get; set; }
public System.DateTime UpdatedOn { get; set; }
public string UpdatedBy { get; set; }

HAES.EDMS.DAL.Address

public System.Guid Id { get; set; }
public short TypeId { get; set; }
public System.Guid PersonId { get; set; }
public string Pincode { get; set; }
public string AddressLine1 { get; set; }
public string AddressLine2 { get; set; }
public string OverrideAddress { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Remark { get; set; }
public System.DateTime CreatedOn { get; set; }
public string CreatedBy { get; set; }
public Nullable<System.DateTime> UpdatedOn { get; set; }
public string UpdatedBy { get; set; }
c# automapper
1个回答
1
投票
您可以更改默认行为,但实际上不能在属性为null的情况下仅使用.value。
© www.soinside.com 2019 - 2024. All rights reserved.