using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using System.Threading.Tasks; using System.Windows; using YouTubeViewers.Domain.Commands; using YouTubeViewers.Domain.Queries; using YouTubeViewers.EntityFramework; using YouTubeViewers.EntityFramework.Commands; using YouTubeViewers.EntityFramework.Queries; using YouTubeViewers.WPF.Stores; using YouTubeViewers.WPF.ViewModels; using YouTubeViewers.WPF.HostBuilders; namespace YouTubeViewers.WPF; public partial class App : Application { private readonly IHost _host; public App() { _host = Host.CreateDefaultBuilder() .AddDbContext() .ConfigureServices((context, services) => { services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddTransient(CreateYouTubeViewersViewModel); services.AddSingleton(); services.AddSingleton((services) => new MainWindow() { DataContext = services.GetRequiredService() }); }) .Build(); } protected override void OnStartup(StartupEventArgs e) { _host.Start(); var youTubeViewersDbContextFactory = _host.Services.GetRequiredService(); using (YouTubeViewersDbContext context = youTubeViewersDbContextFactory.Create()) { //context.Database.EnsureCreated(); context.Database.Migrate(); } MainWindow = _host.Services.GetRequiredService(); MainWindow.Show(); base.OnStartup(e); } protected override void OnExit(ExitEventArgs e) { _host.StopAsync(); _host.Dispose(); base.OnExit(e); } private YouTubeViewersViewModel CreateYouTubeViewersViewModel(IServiceProvider services) { return YouTubeViewersViewModel.LoadViewModel( services.GetRequiredService(), services.GetRequiredService(), services.GetRequiredService()); } }