当我开始使用 Windsor 时,我认为 DI 会很简单。现在它让我越来越困惑。
存储库给我的印象是一个具有单例生命周期的类。我应该有一个 FooRepository 的实例来在应用程序的生命周期中加载并将 Foos 保存到数据库中。
但是,每个存储库都包含对 UnitOfWork 的引用,它执行脏检查,与数据库一起工作等。 UnitOfWork 具有 PerWebRequest 的生命周期 - 将 UnitOfWork 作为单例完全没有意义,因为单例实例可以(例如)同时刷新多个用户会话所做的更改。
那么我有一个单例 FooRepository 持有对 UnitOfWork 的引用,它在会话结束时被释放!我什至不确定这会对存储库的行为产生什么影响,但这听起来不太好。
任何人都可以用简单的英语(好吧,也许用一些代码)解释在 Web 应用程序中管理 Repository 和 UnitOfWork 类的生命周期的适当方法吗?