Пример #1
0
        public SqlServerDbContext CreateDbContext(string[] args)
        {
            var services = new ServiceCollection();

            services.AddOptions();
            services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>();
            services.AddSingleton <ILoggerFactory, LoggerFactory>();

            var basePath = Directory.GetCurrentDirectory();

            Console.WriteLine($"Using `{basePath}` as the ContentRootPath");
            var configuration = new ConfigurationBuilder()
                                .SetBasePath(basePath)
                                .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                                .Build();

            //.SetBasePath(basePath)
            //.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
            //.Build();

            services.AddSingleton <IConfigurationRoot>(provider => configuration);
            services.Configure <BehlogSetting>(options => configuration.Bind(options));

            var siteSettings = services.BuildServiceProvider().GetRequiredService <IOptionsSnapshot <BehlogSetting> >();

            siteSettings.Value.DbType = AppDatabaseType.SqlServer;

            services.AddEntityFrameworkSqlServer(); // It's added to access services from the dbcontext, remove it if you are using the normal `AddDbContext` and normal constructor dependency injection.
            var optionsBuilder = new DbContextOptionsBuilder <BehlogContext>();

            optionsBuilder.Configure(siteSettings.Value, services.BuildServiceProvider());

            return(new SqlServerDbContext(optionsBuilder.Options));
        }
Пример #2
0
 protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
 {
     base.OnConfiguring(optionsBuilder);
     if (!optionsBuilder.IsConfigured)
     {
         optionsBuilder.Configure();
     }
 }