2010-10-31 81 views
2

我试图用MVC2和Ninject NHibernate的结合,并在这里找到一个指南: http://damianm.com/tech/nhibernate-mvc-and-ninject/采用MVC 2 ninject 2和NHibernate - 获取的SessionFactory

的问题是,他使用Ninject 1.所以我有转换它,我几乎succesfull,但我仍然有一个问题:

林不知道如何转换的“context.Kernel.Get”在这里:

protected override ISession CreateInstance(IContext context) 
{ 
    var sessionFactory = context.Kernel.Get<ISessionFactory>(); 
    return sessionFactory.OpenSession(); 
} 

如果你有更佳途径要整合这三个库,请告诉我。

回答

2

我在我的项目中基本上做了同样的事情,但是我没有使用ISession的提供者。这里是我的绑定:

 Bind<ISessionFactory>() 
      .ToProvider<SessionFactoryBuilder>() 
      .InSingletonScope(); 

     Bind<ISession>() 
      .ToMethod(context => context.Kernel.Get<ISessionFactory>().OpenSession()) 
      .InRequestScope(); 
+0

但我仍然得到:“Ninject.IKernel”不包含“获取”的定义,并没有扩展方法“获得”接受型“Ninject.IKernel”的第一个参数可以发现。你使用哪个版本? – Maola 2010-11-01 19:45:24

+11

啊。 'Get'方法是扩展方法。添加'使用Ninject;' – 2010-11-01 20:40:26

+0

我应该看到那个错误:) – Maola 2010-11-01 21:38:10