Unity PerRequestLifetimeManager SaveChanges

时间:2014-07-18 06:27:54

标签: .net asp.net-mvc unity-container

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

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

在Unity中执行此操作的正确方法是什么?我现在看到的唯一方法是覆盖Global.asax中的EndRequest,但它看起来有点脏。

1 个答案:

答案 0 :(得分:1)

请勿在请求结束时自动调用SaveChanges,因为在那个时间点无法安全地确定是否应该实际保存更改。请阅读this Stackoverflow answer以获取更多信息。