我正在尝试在 mvc 项目中设置自动映射器。
我有两个班级:
- 人(数据库域模型)
- PersonViewModel(视图模型)
控制器代码:
public class HomeController : Controller
{
private IPersonRepository _repo;
public HomeController(IPersonRepository repo)
{
_repo = repo;
}
public ActionResult Index()
{
// сопоставление классов
var model = Mapper.Map<List<Person>, List<PersonViewModel>>(_repo.Get());
return View(model);
}
将 AutoMapper 移动到一个单独的类中。它抛出一个错误
public static void RegisterMappings()
{
Mapper.CreateMap<Person, PersonViewModel>(); //'Mapper' does not contain a definition for 'CreateMap'
}
我在手册中找到了正确的设置,但如何正确配置它而不是在每个控制器方法中创建映射器?
您的代码适用于 automapper 4 <。在版本 5 中,CreateMap 方法已从 Mapper 类中移除。在这里阅读更多
更新
在 App_Start 文件夹中,我们将创建 2 个类
在 Global.asax 文件中,我们创建 MapperConfiguration 属性并将其注册到 Application_Start() 方法中
我们创建一个基本控制器,它将具有 Mapper 类型的属性
现在在控制器方法中我们使用基本控制器的 Mapper 属性