繁体   English   中英

使用 appsetting.json 文件中的 .NET Core 6.0 设置数据库上下文

[英]Setup database context using .NET Core 6.0 from appsetting.json file

我正在开发一个需要添加迁移但它说无法添加迁移的应用程序。 我正在注册startup.csCreateDefaultBuilder不包含ConfigureWebHostDefaults的定义。

这是我的代码:

IConfiguration configuration = new ConfigurationBuilder()
                    .SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                    .Build();

using var host = Host.CreateDefaultBuilder(args)
        .ConfigureWebHostDefaults(webBuilder =>
        {
            webBuilder.UseStartup<Startup>();
        })
    .Build();

它是一个控制台应用程序。 startup类中,我正在注册dbContext ,如下所示:

collection.AddDbContext<DataScrapperContext>(options =>
            options.UseSqlServer(configuration.GetConnectionString("DefaultConnection")));

如何使用代码优先的方法在 .NET Core 6.0 中使用控制台应用程序添加迁移?

我已经通过这样做解决了我的问题。 我没有参加启动课程,这里是我的代码和我的注册课程,它就像一个魅力。 我的program.cs包含以下代码。

//Build configuration instance
IConfiguration configuration = new ConfigurationBuilder()
                    .SetBasePath(Directory.GetCurrentDirectory())
                    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                    .Build();

//Build logger for the app
Log.Logger = new LoggerConfiguration()
          .ReadFrom.Configuration(configuration)
          .CreateLogger();

//Create host & configure services to use in the app
using IHost host = Host.CreateDefaultBuilder(args)
   .UseSerilog()
    .ConfigureServices(services =>
    {
        services.ConfigureApplicationServices(configuration);
    })
   .Build();

这是我的ConfigureApplicationServices类代码。 我还在两者之间配置了 Serilog

public static class ApplicationService
    {
        /// <summary>
        /// Registering all the application services with our DI container
        /// </summary>
        /// <param name="collection"></param>
        /// <param name="configuration"></param>
        public static void ConfigureApplicationServices(this IServiceCollection collection, IConfiguration configuration)
        {

            #region [SERVICES REGISTERATIONs]
            collection.AddSingleton(configuration);
            collection.AddScoped<ICoordinateService, CoordinateService>();
            collection.AddScoped<IResponseService, ResponseService>();
            collection.AddScoped<RestClientService>();
            collection.AddScoped<CoordinatesProccessor>();
            #endregion

            collection.AddDbContext<DataScrapperContext>(options =>
            options.UseSqlServer(configuration.GetConnectionString("DefaultConnection")));

        }
    }

我已经使用代码优先方法添加了我的迁移。 这可能对使用 .NET Core 6.0 控制台应用程序的人有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM