2011-08-06 9 views
5

Używam NHibernate i Ninject w ASP.Net MVC, using this page as a guide. Jedną z rzeczy, myślę, że to dziwne jest to, że w tym kodzie (w połowie drogi w dół strony)Czy naprawdę dodaję ten wiersz do każdej klasy w moim modelu przy użyciu ninject i NHibernate?

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(); 
    } 
} 

myślę, że to dziwne, że trzeba mieć tę linię za model:

Bind<IIntKeyedRepository<Truck>>().To<Repository<Truck>>().InRequestScope(); 

Jeśli mam 100 różnych tabel (i tym samym modeli) naprawdę muszę dodać tę linię dla każdej klasy, którą mam? Czy nie ma lepszego sposobu, w którym mogę po prostu zadeklarować to raz i użyć dziedziczenia, aby przekazać typ w moim kontrolerze?

Odpowiedz

6

Użyj wsparcia Otwarte rodzajowych: -

Bind(typeof(IIntKeyedRepository<>)).To(typeof(Repository<>)).InRequestScope(); 
Powiązane problemy