我知道过去曾提出过会话管理的问题,但我找不到任何可以帮助我克服问题的东西。
我有许多通过 Castle Windsor 解决的存储库类(例如 CustomerRepository、ProductRepository 等)(注意:我正在尝试应用此处概述的三种调用模式)。我想我最好每个 Presenter 有一个会话(在我的情况下,这相当于每个表单一个),但是,存储库类需要访问当前活动表单的会话。我不确定我如何合并它事实上,这些存储库是通过 windsor 解决的,因为演示者不是单身人士。
例如:
public class SomePresenter
{
private ISomeView view;
private ISession session;
private ICustomerRepository customerRepository;
private IOrderRepository orderRepository;
public SomePresenter(ISomeView view, ISessionFactory sessionFactory, ICustomerRepository customerRepository, IOrderRepository orderRepository)
{
this.view = view;
this.session = sessionFactory.OpenSession();
this.customerRepository = customerRepository;
this.orderRepository = orderRepository;
}
}
存储库需要访问会话...我如何使用 Windsor 来解决这个问题?我是否被迫通过属性手动设置存储库上的会话,或者是否有一个我不熟悉的聪明的温莎技巧?