gpt4 book ai didi

asp.net-mvc-2 - ASP.NET MVC 2 自动映射器放置

转载 作者:行者123 更新时间:2023-12-02 12:01:37 26 4
gpt4 key购买 nike

我正在使用 Automapper 在 EF4 模型和 ViewModel 之间进行转换。 Automapper 需要声明映射关系,我发现自己将它们复制/粘贴到每个 Controller 的构造函数中。

Mapper.CreateMap<CoolObject, CoolObjectViewModel>();

我可以在哪里放置映射声明,以便它们只被调用一次,而不是每次实例化 Controller 时?这可能吗?

最佳答案

您可以将其放在global.asaxapplication_start()

目前,我有一个从 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));

所以我的 Controller 看起来像这样。您会注意到 HomeController 构造函数需要 IDataContext。我在 RequestScope 级别上向 Ninject 注册 IDataContext,并为我实例化 DataContext 并将其注入(inject)到我的 Controller 中。这就是我的请求级别存储库的来源。

public class HomeController : Controller {

IDataContext dataContext;

public HomeController(IDataContext dataContext) {
this.dataContext = dataContext;
}
}

我在这里有一个关于 Ninject 稍微更详细的解释 http://buildstarted.com/2010/08/24/dependency-injection-with-ninject-moq-and-unit-testing/

关于asp.net-mvc-2 - ASP.NET MVC 2 自动映射器放置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3844012/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com