有人可以幫助我轉換下面來StructureMap?轉換此溫莎片段來StructureMap NHibernate的
public class NHibernateInstaller : IWindsorInstaller
{
#region IWindsorInstaller Members
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(Component.For<ISessionFactory>()
.UsingFactoryMethod(k => BuildSessionFactory()));
container.Register(Component.For<NHibernateSessionModule>());
container.Register(Component.For<ISessionFactoryProvider>().AsFactory());
container.Register(Component.For<IEnumerable<ISessionFactory>>()
.UsingFactoryMethod(k => k.ResolveAll<ISessionFactory>()));
HttpContext.Current.Application[SessionFactoryProvider.Key]
= container.Resolve<ISessionFactoryProvider>();
}
#endregion
public ISessionFactory BuildSessionFactory() { ... }
}
我有這個迄今爲止在我的Global.asax:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
IContainer container = new Container(
x =>
{
x.For<ISessionFactory>().Use // ??? NHibernateHelper.BuildSessionFactory();
x.For<IControllerActivator>().Use<StructureMapControllerActivator>();
x.For<IBar>().Use<Bar>();
}
);
DependencyResolver.SetResolver(new StructuredMapDependencyResolver(container));
}
NHibernateHelper.BuildSessionFactory()是我的方法,不知道如何設置了爲ISessionFactory。
不知道爲什麼我需要把NHibernateSessionModule在我的容器,我只是有線了web.config中的模塊,這還不夠?
我不明白其餘的問題,比如ISessionFactoryProvider如何被連接成「.AsFactory()」,你不需要在那裏提供實現嗎?
resolveAll是做什麼的?
我是新來的StructureMap(和DI一般)所以請不要假設我知道非常感謝。
很不錯,順便說一句,你怎麼使用無狀態會話?是出於性能原因的只讀對象? – Blankman
順便說一句,我用這個:https://gist.github.com/852307 – Blankman
這篇文章是在這裏:http://nhforge.org/blogs/nhibernate/archive/2011/03/03/effective-nhibernate- session-management-for-web-apps.aspx – Blankman