我已经为ASP.NET MVC设置了Unity Bootstrapper并使用PerRequestLifetimeManager注册了我的数据库上下文(在我的情况下使用RavenDb,但这并不重要)。在请求结束时,我想调用myContext.SaveChanges。以下是我在NInject中的表现:
kernel.Bind<IDocumentSession>().ToProvider<DocumentSessionProvider>().InRequestScope().OnDeactivation(c => c.SaveChanges());
在Unity中执行此操作的正确方法是什么?我现在看到的唯一方法是覆盖Global.asax中的EndRequest,但它看起来有点脏。
答案 0 :(得分:1)
请勿在请求结束时自动调用SaveChanges
,因为在那个时间点无法安全地确定是否应该实际保存更改。请阅读this Stackoverflow answer以获取更多信息。