在映射期间停止AutoMapper初始化数据模型属性

时间:2017-10-05 14:27:06

标签: c# entity-framework automapper automapper-6

我有一个ClientDocument数据模型和映射如下:

public class ClientDocumentViewModel
{
        public int Id { get; set; }

        public int CreatedBy { get; set; }

        public DateTime AddedDate { get; set; }

        [HiddenInput]
        public int ClientProfileId { get; set; }

        public string ClientProfileName { get; set; }

        public int SecondaryClientProfileId { get; set; }

        [HiddenInput]
        public string SecondaryClientProfileName { get; set; }

        public int DocumentOwnerId { get; set; }

        public int DocumentId { get; set; }

        public DocumentViewModel Document { get; set; }
    }

和ClientDocumentViewModel如下:

var entity = _mapper.Map<ClientDocumentViewModel, ClientDocument>(model);

当我将ClientDocumentViewModel传递给映射器并使用以下方法将视图模型映射到数据模型时:

{{1}}

ViewModel中的属性都正确地映射到数据模型,但映射器也初始化ClientProfile的实例,它正在使用实体框架停止插入。

我有其他数据模型和视图模型使用相同的映射模式。当我调试它们时,ClientProfile属性未被初始化并且数据实体已成功插入。我已经完成并比较了数据模型,实体框架映射,数据库上的外键和映射配置文件,它们看起来都是一样的。

有没有人知道为什么会这样?

1 个答案:

答案 0 :(得分:2)

您可以指定ClientProfile来忽略映射配置文件中的属性,如下所示:

CreateMap<ClientDocumentViewModel, ClientDocument>()
     .ForMember(x => x.ClientProfile, src => src.Ignore());