Asp.net mvc 4 更新后需要AutoMapper.Reset()

Asp.net mvc 4 更新后需要AutoMapper.Reset(),asp.net-mvc-4,automapper,Asp.net Mvc 4,Automapper,我正在MVC应用程序中使用AutoMapper。 在GET中,我需要显示一个对象列表,并像这样映射它们: Mapper.CreateMap<Word, WordViewModel>(); Mapper.Map<IList<Word>, IList<WordViewModel>>(list); Mapper.CreateMap(); 地图(列表); 然后,用户可以编辑和保存,我做以下操作 Mapper.CreateMap<WordViewM

我正在MVC应用程序中使用AutoMapper。 在GET中,我需要显示一个对象列表,并像这样映射它们:

Mapper.CreateMap<Word, WordViewModel>();
Mapper.Map<IList<Word>, IList<WordViewModel>>(list);
Mapper.CreateMap();
地图(列表);
然后,用户可以编辑和保存,我做以下操作

Mapper.CreateMap<WordViewModel, Word>();
Mapper.CreateMap();
一切都好。但是当我再次尝试获取列表时,AutoMapper说它无法正确执行映射


我解决了在我不再需要AutoMapper.Reset()时调用它的问题。但是我不确定这是正确的工作流程。

您应该在
应用程序启动期间只创建一次地图,而不要使用
重置
。例如:

Global.axac.cs

受保护的无效应用程序\u Start()
{
初始化(x=>x.AddProfile());
}
自动映射配置

公共类视图配置文件:配置文件
{
受保护的覆盖无效配置()
{
CreateMap();
CreateMap();
}
}
确保包含单元测试以验证映射:

[TestFixture]
公共类映射测试
{
[测试]
public void AutoMapper_配置_IsValid()
{
初始化(m=>m.AddProfile());
assertConfigurationsValid();
}
}

然后根据应用程序中的要求调用
Mapper.Map

谢谢。如果我在数据访问层使用AutoMapper,而该层没有访问应用程序启动的权限,该怎么办?我希望避免仅仅为了做这件事而从表示层引用DAL。这就是配置文件的作用所在(好吧,我是如何使用它们的)。我为数据层创建一个DAL配置文件,为视图模型创建一个视图配置文件,并在适当的地方对它们进行初始化(即,应用程序内启动或单元测试等)。你也可以通过国际奥委会对它们进行初始化,但我从来没有这样做过。如果你更愿意这样做,那么看看这篇文章,这是一个很好的起点。