static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                          .SetBasePath(Directory.GetCurrentDirectory())
                          .AddJsonFile("db.provider.json");

            var config = builder.Build();

            DbProviderManager.LoadConfiguration(config);
            var conn = DbConnectionStringManager.ConnectionStrings["sqlite"];
            DbProviderFactory factory = DbProviderFactories.GetFactory(conn.ProviderName);
            IDbConnection     db      = factory.CreateConnection();

            db.ConnectionString = conn.ConnectionString;
            db.Open();

            var cmd = db.CreateCommand();

            cmd.CommandText = "select datetime('now');";
            var dt = cmd.ExecuteScalar();

            System.Console.WriteLine(dt);

            db.Close();
        }
        public static IServiceCollection AddWangSql(this IServiceCollection services, DbProviderOptions option)
        {
            DbProviderManager.Set(option);

            services.AddScoped <ISqlMapper, SqlMapper>();
            services.AddScoped <ISqlExe, SqlMapper>();

            return(services);
        }
        public IDbConnection GetConnection(bool IsIarBD = false)
        {
            DbProviderManager.LoadConfiguration(connectionString);

            Connection = DbProviderFactories.GetFactory(connectionString.GetConnectionString("ProviderName")).CreateConnection();
            Connection.ConnectionString = connectionString.GetConnectionString(IsIarBD ? "IarConnectionString" : "ConnectionString");

            return(Connection);
        }
Example #4
0
        public static void Main(string[] args)
        {
            var builder = new ConfigurationBuilder()
                          .SetBasePath(Directory.GetCurrentDirectory())
                          .AddJsonFile("db.provider.json");
            var config = builder.Build();

            DbProviderManager.LoadConfiguration(config);
            CreateWebHostBuilder(args).Build().Run();
        }
Example #5
0
        // This method gets called by the runtime. Use this method to add services to the container.
        // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940
        public IServiceProvider ConfigureServices(IServiceCollection services)
        {
            // Register the Swagger generator, defining 1 or more Swagger documents
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new Info {
                    Title = "User Settings API", Version = "v1"
                });
            });
            services.AddMvc(con => {
                con.Filters.Add(new GlobalFilter());
            }).SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
            // Enables controllers to be resolved by DryIoc, OTHERWISE resolved by infrastructure
            .AddControllersAsServices();
            services.AddScoped <AuthorizationFilter>();
            //services.AddIdentityCore<IdentityUser>();
            services.AddCors();
            var builder = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json");
            var config  = builder.Build();

            DbProviderManager.LoadConfiguration(config);
            services.AddSingleton <IConfiguration>(config);
            // DryIOC
            var container = new Container().WithDependencyInjectionAdapter(services);

            container.Register <IApplicationContext, ApplicationContext>();
            container.Register <IUserSettings, UserSettingsMemoryRepo>();
            container.Register <IConnectionFactory, ConnectionFactory>();
            container.Register <IUnitOfWork, UnitOfWork.UnitOfWork>();
            container.Register <IUserSettingsRepository, UserSettingsRepository>();
            container.Register <IOnDutiesRepository, OnDutiesRepository>();
            container.Register <IUserSessionInfoRepository, UserSessionInfoRepository>();
            container.Register <IMemberPreferences, MemberPreferencesRepository>();
            container.Register <IResponderRepository, ResponderRepository>();
            var serviceProvider = container.Resolve <IServiceProvider>();

            // Automapper Configuration
            AutoMapperConfiguration.Configure();

            return(serviceProvider);
        }
        public static void Set(DbProviderOptions options, IList <Type> tableMaps = null, bool autoCreateTable = false)
        {
            DbProviderManager.Set(options);
            //注入覆盖
            var provider = DbProviderManager.Get(options.Name);

            provider.AddService <IPageProvider, SqlitePageProvider>();
            provider.AddService <IMigrateProvider, SqliteMigrateProvider>();
            //表映射配置
            if (tableMaps != null && tableMaps.Count > 0)
            {
                EntityUtil.SetMaps(tableMaps, options.Name);
            }
            //自动创建表
            if (autoCreateTable)
            {
                var sqlMapper = new SqlMapper(options.Name);
                var migrate   = sqlMapper.Migrate();
                migrate.Init(sqlMapper);
                migrate.CreateTable();
            }
        }
Example #7
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.Configure <CookiePolicyOptions>(options =>
            {
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded    = context => true;
                options.MinimumSameSitePolicy = SameSiteMode.None;
            });

            // Vincule a instância de configurações como um singleton e exponha-a como um tipo de opções (IOptions <AppSettings>)
            // Nota: Isso garante que a injeção de IOptions <T> e T seja possível e resolva
            services.Configure <AppSettings>(Configuration);

            DbProviderManager.LoadConfiguration(Configuration);

            //AddMultitenacy tem que ser adicionado aqui senão a injeção de dependencia não irá funcionar para o objeto CadInquilino (coisas  do AspnetCore)
            services.AddMultitenancy <CadInquilino, InquilinoResolver>();

            services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());

            services.Configure <RazorViewEngineOptions>(o =>
            {
                o.AreaViewLocationFormats.Clear();
                o.ViewLocationExpanders.Add(new SubAreaViewLocationExpander());
            });


            services
            .AddMvc()
            .AddRazorOptions(options =>
            {
                options.PageViewLocationFormats.Add("/Areas/Administrativo/SubAreas/Cadastros/Views/Shared/{0}.cshtml");
            })
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
            .AddJsonOptions(options =>
            {
                options.SerializerSettings.ContractResolver  = new Newtonsoft.Json.Serialization.DefaultContractResolver();
                options.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
            });

            var connectionString = Configuration["DbConnectionStrings:ConnectionString"];

            services.AddScoped <IInquilinoRepository>(p => new InquilinoRepository(connectionString, "siltec"));

            //Vincule a instância de configurações como um singleton e exponha-a como um tipo de opções(IOptions<SmartSettings>)
            services.Configure <SmartSettings>(Configuration.GetSection("SmartBusiness"));

            //Cria uma nova instancia de um repositorio cada vez que for acessado
            services.AddTransient(typeof(IRepositoryFactory <,>), typeof(RepositoryFactory <,>));

            // Registrar a interface IHttpContextAccessor() para injeção de dependência
            services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>();

            services.ConfigureApplicationCookie(options =>
            {
                options.LoginPath        = "/Account/Login";
                options.LogoutPath       = "/Account/Logout";
                options.AccessDeniedPath = "/Account/Login";
            });

            services.AddAuthentication(ConstantHelpers.SmartBusinesCookie)
            .AddCookie(ConstantHelpers.SmartBusinesCookie, options =>
            {
                options.ReturnUrlParameter = "ReturnUrl";
                options.AccessDeniedPath   = new PathString("/Account/NaoAutorizado");     //especifica a página para qual o usuário deve ser redirecionado se ele tentar acessar uma página no qual não tem direito de acesso.
                options.LoginPath          = new PathString("/Account/Login");
                options.Cookie.Domain      = "smartbusiness.com.br";
                //options.CookieName = $"{ctx.Tenant.IdInquilino}.SmartBusines.Cookies";
            });

            services.AddAntiforgery(o => o.HeaderName = "XSRF-TOKEN");

            services.AddSession(options =>
            {
                options.IdleTimeout        = TimeSpan.FromMinutes(40);
                options.Cookie.IsEssential = true;
            });


            services.AddResponseCaching();
        }
        public static IServiceCollection AddApiSchedule(this IServiceCollection services, IConfiguration configuration)
        {
            var dbSettings = configuration.GetSection("Database").Get <List <DbSettings> >();

            //data
            if (dbSettings != null && dbSettings.Any())
            {
                foreach (var item in dbSettings)
                {
                    DbProviderManager.Set
                    (
                        item.Name,
                        item.ConnectionString,
                        item.ConnectionType,
                        item.UseParameterPrefixInSql,
                        item.UseParameterPrefixInParameter,
                        item.ParameterPrefix,
                        item.UseQuotationInSql,
                        item.Debug
                    );
                }

                //注入SqlMapper
                services.AddScoped <ISqlMapper, SqlMapper>();
            }
            else
            {
                DbProviderManager.Set
                (
                    "SQLite",
                    "Data Source=schedule.db;",
                    "System.Data.SQLite.SQLiteConnection,System.Data.SQLite",
                    true,
                    true,
                    "@",
                    false,
                    false
                );

                //注入SqlMapper
                services.AddScoped <ISqlMapper, SqlMapper>();
            }

            services.AddTransient <ScheduleService>();

            //mvc
            services.AddMvc(options =>
            {
                options.Filters.Add <ApiActionFilter>();
            })
            //枚举序列化字符串
            .AddJsonOptions(options =>
            {
                options.SerializerSettings.Converters.Add(new Newtonsoft.Json.Converters.StringEnumConverter());
                options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver();
            })
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
            ;

            return(services);
        }