为什么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>();
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句