好的,所以我有一个使用MongoDB的IRepository,我很高兴它与Ninject等有什么关系。
DataAccessLibrary (no dependencies apart from MongoDB etc)
-> IEntity
-> IRepository
-> MongoDB\MongoRepository
MyApplicationLibrary (depends on DataAccessLibrary)
-> Entities\Client
-> Entities\etc ....
MyApplication (depends on DataAccessLibrary and MyApplicationLibrary)
-> NinjectMapping (IRepository<Client> to MongoDBRepository<Client>)
但是看起来我们现在需要支持MSSQL。我的问题不在于我想要制作MSSQLRepository,它实际上是如何在我的新存储库中提供IQueryable,就像我在旧存储库中一样(因此它不会破坏现有代码!)。我似乎无法创建DataContext以在DataAccessLibrary中使用EF / Linq-To-SQL,而不会导致与MyApplicationLibrary的循环依赖(因为它需要引用客户端)。
但是,如果我将DataContext从MyApplication传递到存储库,那么它是否打破了我为什么首先选择IRepository模式的全部想法?
有没有办法提供IQueryable,无论它是否应该首先使用(我已经看到很多帖子说现在这是一个坏主意...这是一个耻辱我没有&t当整个事情被实施时看到他们。)