我是否真的使用ninject和NHibernate为我的模型中的每个类添加此行?

leo*_*ora 5 nhibernate asp.net-mvc ninject inversion-of-control

我在ASP.Net MVC中使用NHibernate和ninject,使用此页面作为指南.我认为有一点奇怪的是,在这段代码中(页面的一半)

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为你需要为每个型号设置这条线是很奇怪的:

Bind<IIntKeyedRepository<Truck>>().To<Repository<Truck>>().InRequestScope();
Run Code Online (Sandbox Code Playgroud)

如果我有100个不同的表(以及模型),我真的需要为我拥有的每个类添加这一行吗?有没有更好的方法我只能声明一次并使用继承来传入我的控制器中的Type?

Rem*_*oor 6

使用Open Generics支持: -

Bind(typeof(IIntKeyedRepository<>)).To(typeof(Repository<>)).InRequestScope();
Run Code Online (Sandbox Code Playgroud)