最近在用DDD(领域驱动设计)进行框架搭建,当使用AutoMapper对DTO和实体进行对象映射时,遇到了一个问题。具体报错如下:
XXX needs to have a constructor with 0 args or only optional args.
很明显,AutoMapper需要被映射的对象有无参构造函数或者其属性名与构造函数的参数名匹配。
于是便有了两种解决办法:
一是在领域实体对象中添加一个Protected类型的无参构造函数,这样也不会与设计原则相违背;
二是让含参构造函数的参数名与映射对象属性名匹配或者使用Automapper的映射配置。
如果用第二种方法的后者,可以参考官方文档的用例:
Automapper用法之Construction