Automapper null集合变为空



如果集合为空,为什么automapper会创建空的集合实例?这是我的配置

public class MapperProfile : Profile
{
    protected override void Configure()
    {
        AllowNullCollections = true;
        AllowNullDestinationValues = true;
        Mapper.CreateMap<User, DAL.Models.User>();
        Mapper.CreateMap<DAL.Models.User, User>();
        Mapper.CreateMap<Role, DAL.Models.Role>();
        Mapper.CreateMap<DAL.Models.Role, Role>();
        Mapper.CreateMap<Task, DAL.Models.Task>();
        Mapper.CreateMap<DAL.Models.Task, Task>();
        Mapper.CreateMap<TaskReport, DAL.Models.TaskReport>();
        Mapper.CreateMap<DAL.Models.TaskReport, TaskReport>();
        Mapper.CreateMap<Project, DAL.Models.Project>();
        Mapper.CreateMap<DAL.Models.Project, Project>();
    }
}

我的模型具有相同的属性:

public class User
{
    public virtual List<Task> Tasks { get; set; }
    public virtual List<Role> Roles { get; set; }
    public virtual List<TaskReport> TaskReports { get; set; } 
}

在Global.asax的MVC项目中,我只是添加了我的个人资料,如下所示:

Mapper.AddProfile(new BL.MapperProfile());

谢谢!

对不起,我的第一个答案错了。我能够重新创建问题并了解发生了什么。

由于对Mapper.CreateMap方法的静态调用,导致出现此错误。如果您将代码更改为只调用非静态CreateMap方法,那么您应该会做得很好。

public class MapperProfile : Profile
{
    protected override void Configure()
    {
        AllowNullCollections = true;
        AllowNullDestinationValues = true;
        // calling non-static CreateMap
        CreateMap<User, DAL.Models.User>();
        CreateMap<DAL.Models.User, User>();
        CreateMap<Role, DAL.Models.Role>();
        CreateMap<DAL.Models.Role, Role>();
        CreateMap<Task, DAL.Models.Task>();
        CreateMap<DAL.Models.Task, Task>();
        CreateMap<TaskReport, DAL.Models.TaskReport>();
        CreateMap<DAL.Models.TaskReport, TaskReport>();
        CreateMap<Project, DAL.Models.Project>();
        CreateMap<DAL.Models.Project, Project>();
    }
}

最新更新