在我的设置中,我有两个数据库,我称之为“事务”数据库和“数据仓库”数据库。
我有一个“会话工厂”界面:
public interface ICmsSessionFactory
{
ISession GetTransactionalSession();
ISession GetDataWarehouseSession();
void Release(ISession session);
}
Windsor 功能将自动生成一个实现该接口的类。
假设您有两个静态方法CreateTransactionalSession
和CreateDataWarehouseSession
,您可以注册您的工厂和会话,如下所示:
using Castle.Windsor;
using Castle.Facilities.TypedFactory;
using Castle.MicroKernel.Registration;
// ...
public static void Bootstrap(IWindsorContainer container)
{
container
.AddFacility<TypedFactoryFacility>()
.Register(
Component.For<ISession>()
.UsingFactoryMethod(() => CreateTransactionalSession())
.Named("TransactionalSession")
.LifeStyle.PerWebRequest,
Component.For<ISession>()
.Named("DataWarehouseSession")
.UsingFactoryMethod(() => CreateDataWarehouseSession())
.LifeStyle.PerWebRequest,
Component.For<ICmsSessionFactory>()
.AsFactory()
);
然后,您可以为ICmsSessionFactory
需要它们的 Controller 类创建一个属性。