我在ASP中使用NHibernate和ninject。Net MVC,使用此页作为指导。我觉得很奇怪的一件事是,在这段代码中(页面的一半)
public class RepositoryModule : NinjectModule
{
public override void Load()
{
const string connectionString = @"Server=localhost; Port=3306; Database=trucktracker; Uid=root; Pwd='your_own_password';";
NHibernateHelper helper = new NHibernateHelper(connectionString);
Bind<ISessionFactory>().ToConstant(helper.SessionFactory).InSingletonScope();
Bind<IUnitOfWork>().To<UnitOfWork>().InRequestScope();
Bind<ISession>().ToProvider(new SessionProvider()).InRequestScope();
Bind<IIntKeyedRepository<Truck>>().To<Repository<Truck>>().InRequestScope();
}
}
我认为你每个型号都需要这一行很奇怪:
Bind<IIntKeyedRepository<Truck>>().To<Repository<Truck>>().InRequestScope();
如果我有100个不同的表(因此模型),我真的需要添加这一行在每个类,我有吗?有没有更好的方法,我可以只声明这一次,并使用继承来传递类型在我的控制器?
使用Open泛型支持:-
Bind(typeof(IIntKeyedRepository<>)).To(typeof(Repository<>)).InRequestScope();