Joh*_*ohn 3 session controller automapper asp.net-mvc-2
我正在使用Automapper在我的EF4模型和我的ViewModel之间进行转换.Automapper需要声明映射关系,我发现自己在每个控制器的构造函数中复制/粘贴它们.
Mapper.CreateMap<CoolObject, CoolObjectViewModel>();
Run Code Online (Sandbox Code Playgroud)
我在哪里可以放置映射声明,这样它们只会被调用一次而不是每次实例化一个控制器?这可能吗?
你可以把它放在application_start()的global.asax
目前我有一个静态方法,我从application_start调用,初始化我的所有映射. Library.AutoMapping.RegisterMaps();
AutoMapper.Mapper.CreateMap(typeof(CoolObject), typeof(CoolObjectViewModel));
AutoMapper.Mapper.CreateMap<CoolObject, CoolObjectViewModel>()
.ForMember(d => d.Property1, f => f.MapFrom(s => s.Property1))
.ForMember(d => d.Property2, f => f.MapFrom(s => s.Property2))
.ForMember(d => d.Property3, f => f.MapFrom(s => s.Property3));
Run Code Online (Sandbox Code Playgroud)
所以我的控制器看起来像这样.您会注意到HomeController构造函数需要IDataContext.我在RequestScope级别上使用Ninject注册IDataContext,并为我实例化DataContext并将其注入我的控制器.这是我的请求级别存储库的来源.
public class HomeController : Controller {
IDataContext dataContext;
public HomeController(IDataContext dataContext) {
this.dataContext = dataContext;
}
}
Run Code Online (Sandbox Code Playgroud)
我在这里有一个关于Ninject的更详细的解释http://buildstarted.com/2010/08/24/dependency-injection-with-ninject-moq-and-unit-testing/
| 归档时间: |
|
| 查看次数: |
735 次 |
| 最近记录: |