我希望在我的MVC層中根本沒有存儲庫。如何在業務層中使用簡單注入器用於存儲庫
我在我的DAL項目圖層中有通用的EFRepository
,IRepository
和PASContext
(它從DbContext繼承)。
我已經在我的MVC項目下安裝了Simple Injector和快速入門,這讓我可以在每個控制器的構造函數中獲取我想要的存儲庫。
但在我的解決方案中,我也有BLL項目,我希望MVC層只與BLL層交談,因爲這是項目體系結構,未來我想在BLL層的類中添加邏輯。
而且我不想創建我的BLL層的上下文,但庫沒有構造函數這需要0參數,這是我的ProductBLL
類:
public class BLLProducts
{
IRepository<Product> ProductRepository;
public BLLProducts(EFRepository<Product> Repository)
{
ProductRepository = Repository;
}
public ICollection<Product> getAll()
{
return ProductRepository.All().ToList();
}
}
我怎麼能啓動的BLLProduct
類從控制器或單元測試,而不創建一個存儲庫/上下文?所以我可以在這裏保留我的抽象。
我知道我需要以某種方式使用簡單的注射器在這裏,我只是不知道如何。
非常感謝!你會向我推薦什麼樣的SOLID架構,這與我目前的架構相近? ('BLL'通過存儲庫與'DAL'交談,'MVC'與使用簡單注入器的'BLL'交談) – jony89
@ jony89:研究5個SOLID原則。它們爲您提供比不同架構風格(如3層架構)更重要的指導。計劃抽象,限制類的職責,並防止在添加功能時改變類。 – Steven