// // Licensed under the MIT License. See LICENSE file in the project root for full license information. // namespace MUnique.OpenMU.Persistence.EntityFramework; using Microsoft.EntityFrameworkCore; using MUnique.OpenMU.AttributeSystem; using MUnique.OpenMU.Persistence.EntityFramework.Extensions; using MUnique.OpenMU.Persistence.EntityFramework.Extensions.ModelBuilder; using MUnique.OpenMU.Persistence.EntityFramework.Model; /// /// Context for all types of the data model. /// public class EntityDataContext : ExtendedTypeContext { /// /// Gets or sets the current game configuration. /// This is used by the which gets its data from the current game configuration. /// internal GameConfiguration? CurrentGameConfiguration { get; set; } /// protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if (!ConnectionConfigurator.IsInitialized) { ConnectionConfigurator.Initialize(new ConfigFileDatabaseConnectionStringProvider()); } base.OnConfiguring(optionsBuilder); this.Configure(optionsBuilder); } /// protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity(o => o.Ignore(p => p.CharacterStatus)); // todo modelBuilder.Ignore(); modelBuilder.Ignore(); modelBuilder.Entity(); modelBuilder.Entity(); modelBuilder.Entity(); modelBuilder.Entity().Apply(); modelBuilder.Entity(entity => { entity.Property(e => e.PvpEnabled).HasDefaultValue(true); }); modelBuilder.Entity().Apply(); modelBuilder.Entity(); modelBuilder.Entity(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); modelBuilder.Entity().Apply(); // join entity keys: this.AddJoinDefinitions(modelBuilder); modelBuilder.UseGuidV7Ids(); GuildContext.ConfigureModel(modelBuilder); FriendContext.ConfigureModel(modelBuilder); } }