72 lines
3.0 KiB
C#
72 lines
3.0 KiB
C#
using ServerCore;
|
|
using ServerBase;
|
|
using ServerCommon;
|
|
|
|
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace BrokerCore.Repository.Context;
|
|
|
|
using BrokerApiCore.Repository.SqlConfig;
|
|
|
|
using DbEntity;
|
|
|
|
using Microsoft.EntityFrameworkCore.Design;
|
|
|
|
using SqlConfig;
|
|
|
|
public class MetaverseBrokerDbContext: DbContext
|
|
{
|
|
public DbSet<SapphireExchangeOrder> SapphireExchangeOrders { get; set; }
|
|
public DbSet<PlanetInfo> PlanetInfos { get; set; }
|
|
public DbSet<PlanetItemExchangeOrder> PlanetItemExchangeOrders { get; set; }
|
|
//PlanetItemExchangeOrderAmountUserLimit
|
|
public DbSet<PlanetItemExchangeOrderAmountUserLimit> PlanetItemExchangeOrderAmountUserLimits { get; set; }
|
|
//PlanetItemExchangeOrderAmountTotalLimit
|
|
public DbSet<PlanetItemExchangeOrderAmountTotalLimit> PlanetItemExchangeOrderAmountTotalLimits { get; set; }
|
|
|
|
public MetaverseBrokerDbContext(DbContextOptions<MetaverseBrokerDbContext> options) : base(options)
|
|
{
|
|
// base.Database.EnsureCreated();
|
|
}
|
|
|
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
|
{
|
|
modelBuilder.ApplyConfiguration(new PlanetInfoConfig());
|
|
// todo PlanetExchangeOrderConfig으로 교체 예정
|
|
modelBuilder.ApplyConfiguration(new SapphireExchangeOrderConfig());
|
|
modelBuilder.ApplyConfiguration(new PlanetExchangeOrderConfig());
|
|
modelBuilder.ApplyConfiguration(new PlanetItemExchangeOrderAmountUserLimitConfig());
|
|
modelBuilder.ApplyConfiguration(new PlanetItemExchangeOrderAmountTotalLimitConfig());
|
|
base.OnModelCreating(modelBuilder);
|
|
}
|
|
}
|
|
|
|
// ef core 마이그레이션 도구에서 디자인타임에 사용함
|
|
public class MetaverseBrokerDbContextFactory : IDesignTimeDbContextFactory<MetaverseBrokerDbContext>
|
|
{
|
|
public MetaverseBrokerDbContext CreateDbContext(string[] args)
|
|
{
|
|
// nlog 설정
|
|
var nlog_config_path = "../../bin/Debug/Config/nlog.config";
|
|
var full_path = Path.GetFullPath(nlog_config_path);
|
|
Console.WriteLine("[MetaverseBrokerDbContextFactory] Full path: {0}", full_path);
|
|
Log.NLogFileName = full_path;
|
|
Log.initLog("BrokerApiServer", "Developer");
|
|
|
|
var server_config = new ServerConfigMetaverseBroker();
|
|
server_config.setConfigFilePath("../../bin/Debug/Config/ServerConfig.json");
|
|
server_config.tryLoadConfig().GetAwaiter().GetResult();
|
|
var connection_string = server_config.MetaverseBroker?.MetaverseBrokerDbLocal;
|
|
Console.WriteLine("[MetaverseBrokerDbContextFactory] Connection string: {0}", connection_string);
|
|
if (string.IsNullOrEmpty(connection_string)) { throw new ApplicationException("Connection string is empty."); }
|
|
|
|
var mysql_version = ServerVersion.AutoDetect(connection_string);
|
|
Console.WriteLine("[MetaverseBrokerDbContextFactory] Mysql vsersion: {0}", mysql_version.ToString());
|
|
// var mysql_version = ServerVersion.Create(new Version(11, 6, 2), ServerType.MariaDb);
|
|
var options_builder = new DbContextOptionsBuilder<MetaverseBrokerDbContext>();
|
|
options_builder.UseMySql(connection_string, mysql_version, builder => builder.EnableRetryOnFailure(3)).EnableDetailedErrors();
|
|
return new MetaverseBrokerDbContext(options_builder.Options);
|
|
}
|
|
}
|