Environment:
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="3.1.7" />
SQL Server 2016
.NET Core 3.1
I have a working snippet of a console application
below that gets connection string out of appsettings
but it feels like I have too much code and I should be able to combine some of this but not sure how.
class Program
{
static void Main(string[] args)
{
CreateHostBuilder(args);
}
public static void CreateHostBuilder(string[] args)
{
IConfiguration config = new ConfigurationBuilder()
.AddJsonFile(Path.Combine(Directory.GetCurrentDirectory(), "appsettings.json"), true, true)
.Build();
var host = Host.CreateDefaultBuilder(args)
.ConfigureServices((context, services) =>
{
services.AddTransient<App>();
services.AddDbContext<SchoolContext>(options =>
options.UseSqlServer(config["ConnectionStrings:MyDatabase"]));
})
.Build();
ActivatorUtilities.CreateInstance<Startup>(host.Services);
}
}
Update
Based on @andy's answer below...
class Program
{
static void Main(string[] args)
{
var host = CreateHostBuilder(args).Build();
host.RunAsync().GetAwaiter();
ActivatorUtilities.CreateInstance<Startup>(host.Services);
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args).ConfigureServices((context, services) =>
{
var config = context.Configuration; // grab from here
services.AddTransient<App>();
services.AddDbContext<SchoolContext>(options =>
options.UseSqlServer(config["ConnectionStrings:MyDatabase"]));
});
}