Castle Windsor使用短暂的生活方式创建了多个大孩子对象的实例。
对象A依赖于C1和C2。 C1和C2都依赖于GC。
关于积累:
在我的情况下,GS管理nHibernate会话,C1和C2是域A类使用的存储库。
Castle Windsor返回2个会话,导致跨会话数据错误。
答案 0 :(得分:0)
这些是瞬态语义 - 每次提供新实例时。 StructureMap在这里使用自定义的生活方式。
为什么你在这里使用短暂的生活方式?不是每个网络请求(如果你在网络应用程序中运行)更合适吗?
如果你没有在网络应用程序中运行,你可能应该有一些其他工作单元(如屏幕),你可以通过自定义的生活方式绑定你的会话。
答案 1 :(得分:0)
谢谢Krzysztof,
我们在批处理应用程序中使用它,我希望每个“逻辑”工作单元有1个会话。 在Web应用程序中,我使用WebApp生活方式(或HttpSession的SM Cache)。
我真正想要的只是短暂的“普通”孩子。所以对于第二次构建,我会得到一个新的GC。我可以创造一种自定义的生活方式,但这是相当多的工作。
CW是否提供对“root”对象或其他构建实例的访问权限,因此我可以在此控制。
谢谢,
SB
PS - 我挑战StructureMap在这里使用自定义的生活方式。