我正在努力使用MVC 4应用程序中的Entityframework,利用Unity for Dependency注入和Automapper将对象自动化到DTO.我从一个问题跑到另一个问题,EF有时会返回旧数据,所以我认为我的设计不够好.
我有什么:
要在我的Application_Start中配置Unity:
var UnityContainer = UnityConfig.GetConfiguredContainer(); Mapper.Initialize(cfg => cfg.ConstructServicesUsing(type => UnityContainer.Resolve(type))); UnityContainer.Resolve().MapAutoMapper(); ...
在UnityConfig.RegisterTypes中:
container.RegisterType(new ContainerControlledLifetimeManager()) ...
我的存储库使用构造函数依赖注入:
public class MSSQLTenantRepository : IDalTenantRepository { private readonly IMyContext _Db; public MSSQLTenantRepository(IMyContext db) { Db = db; } ...
我的控制器也使用构造函数依赖注入:
public class TenantController : Controller { private readonly ITenantRepository _TenantRepository; public TenantController(ITenantRepository tenantRepository, { _TenantRepository = tenantRepository; } ...
自动配置配置:
public class AutoMapperConfig { private readonly ITenantRepository _TenantRepository; public AutoMapperConfig(ITenantRepository tenantRepository) { _TenantRepository = tenantRepository; } ...
问题:我有时会从第一个请求中获取旧数据.
当我手动更新de SQL Server中的数据时,EF的返回对象不会反映更改
当我尝试不同的选项时,我也遇到了关于多个上下文的错误(由于Automapper)
我的问题:
使用Unity,MVC4,EF 6,存储库和Automapper的最佳做法是什么?
放置代码的位置(例如,在Unity.AaxActivator的global.asax.c或UnitiConfig.cs中?
我是否需要显式处理dbcontext,如果是这样的话:在哪里这样做?
关于这个主题有很多说法,但没有任何内容涵盖所有内容.