//
// 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);
}
}