2011年12月21日 星期三

Entity Framework with Unity IoC

在使用 EF4.1 及 Unity 時遇到了資料更新後還會取得舊資料的問題。發現原來是因為使用了 Unity 的關係。

Unity 記下了DBContext 的Instance 而不會在每次 request 的時後重新建立。所以會產生取得舊資料的問題。要記得加上 HierarchicalLifetimeManager 才能夠讓 dbContext  在每次 Request 的時後重建。

   1: private static IUnityContainer BuildUnityContainer()
   2: {
   3:     var container = new UnityContainer();
   4:  
   5:     container.RegisterType<ILtsService, LtsService>();
   6:     container.RegisterType<IEmpService, EmpService>();
   7:  
   8:     container.RegisterType<WEKIDSDBEntities>(new HierarchicalLifetimeManager());
   9:     container.RegisterType<CodeGroupHelper>(new PerThreadLifetimeManager());
  10:     container.RegisterType<SeqNoHelper>(new PerThreadLifetimeManager());
  11:     
  12:     container.RegisterInstance<IUnityContainer>(container, new PerThreadLifetimeManager());
  13:     
  14:     container.RegisterControllers();
  15:  
  16:     return container;
  17: }

 


參考資料:


Introducing The Unity.Mvc3 NuGet Package To Reconcile MVC3, Unity and IDisposable

沒有留言: