我有一个使用实体框架(DbContext)的共享库。该库用于普通的 Windows 应用程序以及 Web MVC 项目。我使用 Ninject 作为 DI。
这是我的理解,我应该在InThreadScopeWindowsDbContext应用程序和InRequestScopeMVC 项目中使用。
然而,这会创建一些不需要的依赖项。我的共享库需要引用System.Web(用于请求范围)。或者我的 Web 项目需要对 EF 的引用(这样我就可以更改范围)。
是否可以设置 Ninject 以避免这些依赖关系?
经常有人使用“数据库会话”的某种表示形式,例如 UnitOfWork。因此,如果您的共享库“SomeLib”提供 IUnitOfWork 来表示会话,您可能会在应用程序中创建 1:1 绑定 IUnitOfWork:DbContext @ SomeLib 和更具体的绑定。
你可以看到我对类似问题的