如何避免由于DI容器绑定要求而使BAL依赖于DAL?

时间:2012-09-21 21:56:25

标签: c# .net ninject

我的申请包括三个项目。核心,DAL和BAL。

核心包含域对象(客户,订单,产品)。它还包含基本的IRepository接口IRepository <T>.

DAL包含EntityFramework特定内容。它还包含Concrete Repositories(CustomerRepository,OrderRepository,ProductRepository)。我在这里添加了这些具体的存储库,因为它们依赖于DbContext(这是EF特定的)

现在我的BAL应该只依赖于Core而不依赖于DAL。我在这个项目中添加了对NInject的依赖。但是,我仍然需要告诉Ninject它应该将IRepository <Customer>解析为CustomerRepository,这迫使我在这里添加DAL依赖。有没有避免在我的BAL项目中添加对DAL的依赖?

1 个答案:

答案 0 :(得分:5)

您通常会在composition root进行容器注册,这通常是在引导程序中,并且该代码将包含在您的Web或桌面程序集中,而不是包含您的业务/域对象的程序集。