Asp.net 以类似于PerRequestLifetimeManager的方式解析信号器依赖关系
我有一个ASP.NET MVC 4.5 Web API应用程序,在某些情况下也使用Signal。这意味着Web Api控制器和信号集线器可以调用底层业务逻辑 依赖项是使用Unity注入的,我使用PerRequestLifetimeManager设计了应用程序以重用存储库和ApplicationDbContext。由于许多存储库都访问数据库,因此应该限制打开的数据库连接的数量。在控制器中的请求结束时,我调用SaveChanges(),并将受完整请求影响的更改存储在数据库中 这种行为在我使用Web Api时起作用,但在使用SignalR时我遇到了一些麻烦:我创建了一个混合LifetimeManager,当Http请求存在时,它的行为类似于PerRequestLifetimeManager,当没有Http请求存在时,它的行为类似于TransientLifetimeManager(那么它就是SignalR请求)。问题在于,在signer调用期间创建的各种存储库都会获得自己的ApplicationDbContext实例,而SaveChanges()永远不会在这些存储库上调用 所以,我需要一个像PerRequestLifetimeManager一样工作的终身管理器,但对于Signal。有人能帮我吗?或者我在这里走错了方向,每个存储库是否应该始终获得自己的ApplicationDbContext实例,并在可以持久化更改时调用SaveChanges()本身?我没有这样做,因为我认为我有太多的数据库连接,我希望整个请求都有一个事务Asp.net 以类似于PerRequestLifetimeManager的方式解析信号器依赖关系,asp.net,dependency-injection,signalr,unity-container,Asp.net,Dependency Injection,Signalr,Unity Container,我有一个ASP.NET MVC 4.5 Web API应用程序,在某些情况下也使用Signal。这意味着Web Api控制器和信号集线器可以调用底层业务逻辑 依赖项是使用Unity注入的,我使用PerRequestLifetimeManager设计了应用程序以重用存储库和ApplicationDbContext。由于许多存储库都访问数据库,因此应该限制打开的数据库连接的数量。在控制器中的请求结束时,我调用SaveChanges(),并将受完整请求影响的更改存储在数据库中 这种行为在我使用Web