关于使用AutoMapper感到困惑

Kas*_*sem 1 asp.net-mvc automapper asp.net-mvc-3

我读了几篇文章,我看过MvcConf 1中的视频,其中Jimmy Bogard演示了AutoMapper的使用,但我仍然感到困惑.

我有一个User POCO类,它有很多属性.我还有一个RegisterViewModel类,它包含User类属性的子集.现在,当用户注册时,她将把数据填充到传递给视图的空RegisterViewModel实例中.然后,此数据必须映射到要添加到数据库的User实例,但是User上有某些属性需要作为默认值输入(类似于RegistrationDate应该分配给DateTime.Now).在这种情况下我该怎么办?

而且,假设我正在更新User实例.首先,我需要从数据库中获取数据并将其映射到UpdateUserViewModel类.然后,当用户提交更改时,必须将这些更改映射回User实例.在这种情况下,我是否需要在配置文件中执行两个单独的Mapper.CreateMap <>()条目,或者AutoMapper是否会自动为我执行此操作?

我想这就是现在,你的帮助将受到高度赞赏!:)

Dar*_*rov 5

对于第一个场景,您可以在映射中定义缺少的属性:

Mapper
    .CreateMap<RegisterViewModel, User>()
    .ForMember(
        dest => dest.RegistrationDate,
        opt => opt.UseValue(DateTime.Now)
    );
Run Code Online (Sandbox Code Playgroud)

对于第二种情况,您需要两个单独的映射,因为AutoMapper不会自动定义双向映射:

Mapper.CreateMap<UpdateUserViewModel, User>();
Mapper.CreateMap<User, UpdateUserViewModel>();
Run Code Online (Sandbox Code Playgroud)