Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        // 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();
        }