public static void StartNhibernate(FluentConfiguration instanceBuilderConfiguration, bool reloadDb = true) { if (reloadDb) { IManagerDataBase managerDataBase = new NhibernateManagerDataBase(instanceBuilderConfiguration); if (!managerDataBase.IsExist()) { managerDataBase.Create(); } managerDataBase.Update(); } SessionFactory = new NhibernateSessionFactory(instanceBuilderConfiguration); SpecWithRepository.Repository = BuildNhibernateRepository(); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddMvc(options => { options.Filters.Add(new IncodingErrorHandlingFilter()); }) .AddMvcOptions(options => { options.ModelBinderProviders.Clear(); options.ModelBinderProviders.Add(new FormFileModelBinderProvider()); options.ModelBinderProviders.Add(new FormCollectionModelBinderProvider()); options.ModelBinderProviders.Add(new ComplexTypeModelBinderProvider()); options.ModelBinderProviders.Add(new SimpleTypeModelBinderProvider()); options.ModelBinderProviders.Add(new ArrayModelBinderProvider()); options.ModelBinderProviders.Add(new CollectionModelBinderProvider()); options.ModelBinderProviders.Add(new DictionaryModelBinderProvider()); options.ModelBinderProviders.Add(new FloatingPointTypeModelBinderProvider()); //options.ModelBinderProviders.Add(new BinderTypeModelBinderProvider()); }) .AddFluentValidation(configuration => { configuration.ValidatorFactory = new IncValidatorFactory(); AssemblyScanner.FindValidatorsInAssemblyContaining <ItemEntity>().ForEach(result => { services.Add(ServiceDescriptor.Transient(result.InterfaceType, result.ValidatorType)); services.Add(ServiceDescriptor.Transient(result.ValidatorType, result.ValidatorType)); }); }); services.ConfigureIncodingCoreServices(); // EF Core: //services.ConfigureIncodingEFDataServices(typeof(ItemEntity), builder => //{ // builder.UseSqlServer(Configuration.GetConnectionString("Main")); //}); // NH Core: string path = Path.Combine(AppContext.BaseDirectory, "fluently_" + ".cfg"); // serialization issues, do not pass path yet Func <FluentConfiguration, FluentConfiguration> builderConfigure = configuration => { configuration = configuration.Database(MsSqlConfiguration.MsSql2012 .ConnectionString(Configuration.GetConnectionString("Main")) .ShowSql()) .ExposeConfiguration(cfg => new SchemaUpdate(cfg).Execute(false, true)); return(configuration); }; //services.ConfigureIncodingNhDataServices(typeof(ItemEntity), path, builderConfigure); Func <Configuration> config = () => { FluentConfiguration fluently = Fluently.Configure(); fluently = builderConfigure(fluently); fluently = fluently .Mappings(configuration => configuration.FluentMappings .Add(typeof(DelayToSchedulerNhMap)) .AddFromAssembly(typeof(ItemEntity).Assembly)); return(fluently.BuildConfiguration()); }; NhibernateSessionFactory sessionFactory = new NhibernateSessionFactory(config, path); services.AddSingleton <IUnitOfWorkFactory>(provider => new NhibernateUnitOfWorkFactory(sessionFactory)); services.AddSingleton <INhibernateSessionFactory>(sessionFactory); //second config //Func<FluentConfiguration, FluentConfiguration> builderConfigure2 = configuration => //{ // configuration = configuration.Database(MsSqlConfiguration.MsSql2012 // .ConnectionString(Configuration.GetConnectionString("Main1")) // .ShowSql()) // .ExposeConfiguration(cfg => new SchemaUpdate(cfg).Execute(false, true)); // return configuration; //}; //services.ConfigureIncodingNhDataServices(typeof(ItemEntity), path, builderConfigure); //services.AddSingleton<IUnitOfWorkFactory, NhibernateUnitOfWorkFactory>(); //Func<Configuration> config2 = () => //{ // FluentConfiguration fluently = Fluently.Configure(); // fluently = builderConfigure2(fluently); // fluently = fluently // .Mappings(configuration => configuration.FluentMappings // .Add(typeof(DelayToSchedulerNhMap)) // .AddFromAssembly(typeof(ItemEntity).Assembly)); // return fluently.BuildConfiguration(); //}; //NhibernateSessionFactory sessionFactory2 = new NhibernateSessionFactory(config2, null); //services.AddScoped<INhibernateSessionFactory, INhibernateSessionFactory>("Main1"); NhibernateRepository.SetInterception(() => new WhereSpecInterception()); services.ConfigureIncodingWebServices(); }