public static ContainerBuilder GetBuilder(AppSettingConstant.DbFrameworkType dbFrameworkUse) { var builder = new ContainerBuilder(); var serviceAssembly = Assembly.Load("MyUniversity.Services"); builder.RegisterAssemblyTypes(serviceAssembly) .Where(x => x.Name.EndsWith("Service")) .AsImplementedInterfaces() .InstancePerLifetimeScope(); //builder.RegisterType<CourseService>().As<ICourseService>().InstancePerLifetimeScope(); //builder.RegisterType<DepartmentService>().As<IDepartmentService>().InstancePerLifetimeScope(); // Register for Repositories, UnitOfWork switch (dbFrameworkUse) { case AppSettingConstant.DbFrameworkType.Nhibernate: builder.RegisterGeneric(typeof(MyUniversity.Dal.Repositories.NHibernate.BaseRepository<,>)) .As(typeof(IBaseRepository<,>)) .InstancePerLifetimeScope(); builder.RegisterType<NHUnitOfWork>() .As<IUnitOfWork>() .InstancePerLifetimeScope(); builder.Register(x => DatabaseInitialization.GetNHibernateDbConfig() .BuildSessionFactory()).As<ISessionFactory>().SingleInstance(); builder.Register(x => x.Resolve<ISessionFactory>().OpenSession()).InstancePerLifetimeScope(); break; case AppSettingConstant.DbFrameworkType.EntityFramework: builder.RegisterGeneric(typeof(MyUniversity.Dal.Repositories.EntityFramework.BaseRepository<,>)) .As(typeof (IBaseRepository<,>)) .InstancePerLifetimeScope(); //builder.RegisterType<EFStudentProfileRepository>() // .As<IStudentProfileRepository>() // .InstancePerLifetimeScope(); ////builder.RegisterType<CourseRepository>() //// .As<ICourseRepository>() //// .InstancePerLifetimeScope(); //builder.RegisterType<DepartmentRepository>() // .As<IDepartmentRepository>() // .InstancePerLifetimeScope(); //builder.RegisterType<InstructorProfileRepository>() // .As<IInstructorProfileRepository>() // .InstancePerLifetimeScope(); //builder.RegisterType<EnrollmentRepository>() // .As<IEnrollmentRepository>() // .InstancePerLifetimeScope(); //builder.RegisterType<PersonRepository>() // .As<IPersonRepository>() // .InstancePerLifetimeScope(); builder.RegisterType<EFUnitOfWork>() .As<IUnitOfWork>() .InstancePerLifetimeScope(); builder.RegisterType<MyUniversityDbContext>().InstancePerLifetimeScope(); break; } return builder; }
public static void Run(AppSettingConstant.DbFrameworkType dbFrameworkUse) { switch (dbFrameworkUse) { case AppSettingConstant.DbFrameworkType.Nhibernate: GetNHibernateDbConfig().BuildConfiguration(); break; case AppSettingConstant.DbFrameworkType.EntityFramework: // Database.SetInitializer(new MyUniversityDbInitializer()); break; } }