using System.Windows; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Waaagh.Models; using Waaagh.Services.Abstract; using Waaagh.ViewModels; using Waaagh.Views; namespace Waaagh { public partial class App: Application { [STAThread] static public void Main(string[] args) { SQLitePCL.Batteries.Init(); using IHost host = CreateHostBuilder(args).Build(); host.Start(); App app = new App(); app.InitializeComponent(); app.MainWindow = host.Services.GetRequiredService(); app.MainWindow.Visibility = Visibility.Visible; app.Run(); #if DEBUG // DbTest(host); #endif } protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); // SplashScreen splash = new SplashScreen(@"\Assets\Image\琪露诺3.jpg"); // splash.Show(false, true); // splash.Close(new TimeSpan(0, 0, 5)); } static private IHostBuilder CreateHostBuilder(string[] args) { return Host.CreateDefaultBuilder(args) .ConfigureServices(services => { services.AddDbContextFactory((sp, options) => { IConfiguration configuration = sp.GetRequiredService(); string? sqliteConnectionString = configuration.GetConnectionString("Default"); if (string.IsNullOrWhiteSpace(sqliteConnectionString)) { throw new Exception("Configuration Database Connection String Error."); } options.UseSqlite(sqliteConnectionString); }); }) .AddDefaultMessageManager() .AddDefaultMessageCatcher() .AddDefaultScenarioManager() .ConfigureServices(services => { // MainWindow services.AddSingleton(); services.AddSingleton(sp => { return new MainWindow() { DataContext = sp.GetRequiredService() }; }); }); } static public void DbTest(IHost host) { IDbContextFactory factory = host.Services.GetRequiredService>(); AppDatabaseContext context = factory.CreateDbContext(); { Scenario scenario = new Scenario() { Id = 1, Name = "Test" }; if (context.Scenarios.Contains(scenario) == false) { context.Scenarios.Add(scenario); } else { scenario.IsLegacy = true; context.Scenarios.Update(scenario); } context.SaveChanges(); } foreach (Scenario scenario in context.Scenarios) { Console.WriteLine($"{scenario.Name}-{scenario.Id}<{scenario.IsLegacy}>: {scenario.Description}."); } } } }