using Microsoft.EntityFrameworkCore; using EntityFrameworkCore.Domain; using Microsoft.Extensions.Logging; using System.Reflection; namespace EntityFrameworkCore.Data; public class DeadBallZoneLeagueDbContext : DbContext { private string DbPath; public DeadBallZoneLeagueDbContext() { // In Ubuntu 24.04, the file is created here: /home/user/.local/share var folder = Environment.SpecialFolder.LocalApplicationData; var path = Environment.GetFolderPath(folder); DbPath = Path.Combine(path, "DeadBallZoneLeague_EFCore.db"); } public DbSet Teams { get; set; } public DbSet Coaches { get; set; } public DbSet Leagues { get; set; } public DbSet Matches { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlite($"Data source={DbPath}") // .UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking) // Do not use tracking, set globally on all queries. .LogTo(Console.WriteLine, LogLevel.Information) .EnableSensitiveDataLogging() // Do not allow this in Production. .EnableDetailedErrors(); // Do not allow this in Production. } protected override void OnModelCreating(ModelBuilder modelBuilder) { // modelBuilder.ApplyConfiguration(new TeamConfiguration()); // modelBuilder.ApplyConfiguration(new LeagueConfiguration()); // This line can be used, then individual configurations do not need to be loaded. modelBuilder.ApplyConfigurationsFromAssembly(Assembly.GetExecutingAssembly()); } }