2011-08-06 7 views
5

ASP.Net MVC, using this page as a guide numaralı telefondan NHibernate kullanıyorum.Modelimde bulunan her sınıf için bu satırı gerçekten kullanıyorum: Ninject ve NHibernate?

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

ben varsa: Garip olduğunu düşünüyorum Bir şey, bu kodda

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

(yarım sayfa aşağı) Sana modeli başına bu hattı olması gerektiğini garip olduğunu düşünüyorum olmasıdır 100 farklı tablo (ve dolayısıyla modeller) bu satırı benim sahip olduğum her sınıf için eklemem gerekiyor mu? Bunu bir kez ilan edip, denetleyicideki Tür'e geçmek için miras kullanmamın daha iyi bir yolu yok mu?

cevap

6

Açık Jenerik desteği kullanın: -

Bind(typeof(IIntKeyedRepository<>)).To(typeof(Repository<>)).InRequestScope(); 
İlgili konular