2014-10-31 74 views
0

我有一個使用實體框架ORM的MVC應用程序。一切工作正常 - 但是,每一個新的控制器上我初始化一個新的存儲庫EF和MVC - 通過控制器傳遞存儲庫

public AController() 
     : this(new ARepository()) 

    public AController(IA _A) 
    { 
     this.m_A = _A 
    } 

但初始化新的存儲庫時,它需要從數據庫中獲取,在一個庫中的entites,這需要克服5000+實體

list<object> ob = m_A.entity.ToList(); // This now has over 5000+ items 

明顯的問題是,當用戶的帖子或獲取這些控制器,它打算做這一切的時候,當然,正如我在控制器上初始化一個新的存儲庫,它減慢降低性能,我不能使用緩存,這將加快速度。

有沒有一種方法可以將儲存庫發送到每個控制器或無論如何我可以加快EF提取?

感謝

回答

2

你可以使用依賴注入,將實例它作爲一個單獨的對象實例化你的資料庫。如果你不打算使用DI容器,那麼你可以在一些項目中可以看出/在控制器共享創建一個靜態實例:

private static IMyRepository _instance; 

public IMyRepository Repository 
{ 
    get 
    { 
     if (_instance == null) 
     { 
      _instance = new SomeRepositoryObject(); 
     } 

     return _instance; 
    } 
} 

在你的情況下,由於初始化的,你實際上可以創建一個方法而不是一個屬性,創建對象後,您可以調用您的方法來加載5000多個對象。