我有一个从Global.asax调用的静态映射器类,它可以很好地映射简单的类:
的Global.asax:
AutoMapperConfiguration.Configure();
AutoMapperConfiguration:
Configure()
{
Mapper.Initialize(cfg => { cfg.CreateMap<TMS.Entity.CourseSession, DataAccess.Entities.CourseSession>(); });
Mapper.Initialize(cfg => {
cfg.CreateMap<TMS.Entity.Course, DataAccess.Entities.Course>()
其中CourseSession
是Course
public class Course
{
public ICollection<CourseSession> CourseSessionColl;
无论映射器中的内容如何,都会引发错误:
无法映射DataAccess.Entities.CourseSession上的以下属性: CourseSessionColl
如果我忽略该属性,它会起作用:
Mapper.Initialize(cfg => {
cfg.CreateMap<TMS.Entity.Course, DataAccess.Entities.Course>()
.ForMember(o => o.CourseSessionColl, s => s.Ignore())
但如果我尝试映射它,它总会抛出错误。
编辑 - 添加了类
的示例命名相同的类中的属性,并且我还有这个映射的映射:
namespace TMS.Entity
{
public class Course
{
public ICollection<CourseSession> CourseSessionColl { get; set; }
...
------------------------------------------------
namespace DataAccess.Entities
{
public class Course
{
public ICollection<CourseSession> CourseSessionColl { get; set; }
答案 0 :(得分:1)
问题是您正在调用Initialize
方法两次,第二次调用会覆盖第一个配置。您需要在同一配置中添加更多地图,而不是多次调用Initialize
方法:
Mapper.Initialize(cfg => {
cfg.CreateMap<TMS.Entity.CourseSession, DataAccess.Entities.CourseSession>();
cfg.CreateMap<TMS.Entity.Course, DataAccess.Entities.Course>(); });