问题
My application consists of three projects. Core, DAL and BAL.
Core contains Domain objects (Customer, Order, Product). It also contains basic IRepository interface IRepository<T>.
DAL contains EntityFramework specific stuff. It also contain Concrete Repositories ( CustomerRepository, OrderRepository, ProductRepository). I added these concrete repositories here as they depend on DbContext (which is EF Specific)
Now my BAL should only have dependency on Core and no dependency on DAL. I have added a dependency on NInject in this project. However, I still need to tell Ninject that it should resolve IRepository<Customer>
as CustomerRepository and that is forcing me to add DAL dependency here. Is there anyway of avoid adding dependency on DAL in my BAL Project?
回答1:
You would normally do your container registration at your composition root, which would be typically at bootstrap and that code would be contained in your web or desktop assembly, not your assembly that contains your business/domain objects.
来源:https://stackoverflow.com/questions/12538693/how-to-avoid-having-bal-dependent-on-dal-due-to-di-container-binding-requirement