.net Unity PerRequestLifetimeManager保存更改

.net Unity PerRequestLifetimeManager保存更改,.net,asp.net-mvc,unity-container,.net,Asp.net Mvc,Unity Container,我已经为ASP.NET MVC设置了Unity Bootstrapper,并向PerRequestLifetimeManager注册了我的数据库上下文(在我的例子中是RavenDb,但这并不重要)。在请求结束时,我想调用myContext.SaveChanges。以下是我在NInject中的做法: kernel.Bind<IDocumentSession>().ToProvider<DocumentSessionProvider>().InRequestScope().O

我已经为ASP.NET MVC设置了Unity Bootstrapper,并向PerRequestLifetimeManager注册了我的数据库上下文(在我的例子中是RavenDb,但这并不重要)。在请求结束时,我想调用myContext.SaveChanges。以下是我在NInject中的做法:

kernel.Bind<IDocumentSession>().ToProvider<DocumentSessionProvider>().InRequestScope().OnDeactivation(c => c.SaveChanges());
kernel.Bind();

团结一致的正确方式是什么?我现在看到的唯一方法是覆盖Global.asax中的EndRequest,但它似乎有点脏。

请不要在请求结束时自动调用
SaveChanges
,因为此时无法安全地确定是否应该保存更改。阅读了解更多信息