using CloudGaming.Code.DataBaseModel; using FreeSql.DatabaseModel; namespace CloudGaming.Repository.Game; /// /// 后台管理系统数据库上下文 /// [DbContextConfig($"Repository.*.Entities.Ext.*")] public class ExtDbContext : BaseDbContext { /// /// /// public override IUnitOfWork UnitOfWork { get; } public ExtDbContext(IConfiguration configuration, IWebHostEnvironment webHostEnvironment, AppConfig appConfig) : base(configuration, webHostEnvironment, appConfig, AppDataBaseType.Ext) { UnitOfWork = new UnitOfWorkImpl(this); } } ///// ///// 后台管理系统数据库上下文 ///// //[DbContextConfig($"Repository.*.Entities.Ext.*")] //public class ExtDbContext : DbContext, IBaseDbContext //{ // /// // /// 工作单元 // /// // public IUnitOfWork UnitOfWork { get; } // private readonly IConfiguration _configuration; // private readonly IWebHostEnvironment _webHostEnvironment; // public ExtDbContext(IConfiguration configuration, IWebHostEnvironment webHostEnvironment) // { // UnitOfWork = new UnitOfWorkImpl(this); // _configuration = configuration; // _webHostEnvironment = webHostEnvironment; // } // /// // /// 获取仓储配置 // /// // /// // /// // public RepositoryOptions GetRepositoryOptions() // { // var repositoryOptions = new RepositoryOptions() // { // ConnectionString = "Server=192.168.1.17;Database=CloudGamingCBT;User Id=sa;Password=Dbt@com@123;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=True;", // IsMonitorEFCore = true, // DefaultDatabaseType = DefaultDatabaseType.SqlServer // }; // return repositoryOptions; // } // /// // /// 配置 // /// // /// // /// // protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) // { // var repositoryOptions = this.GetRepositoryOptions(); // // 获取连接字符串 // var connectionString = repositoryOptions.ConnectionString; // connectionString = string.IsNullOrWhiteSpace(connectionString) ? // _configuration["ConnectionStrings:" + repositoryOptions!.DefaultDatabaseType.ToString()] : // connectionString; // switch (repositoryOptions.DefaultDatabaseType) // { // case DefaultDatabaseType.SqlServer: // optionsBuilder // .UseSqlServer(connectionString, w => w.MinBatchSize(1).MaxBatchSize(1000)) // ; // break; // case DefaultDatabaseType.MySql: // optionsBuilder // .UseMySql(connectionString, MySqlServerVersion.LatestSupportedServerVersion, w => w.MinBatchSize(1).MaxBatchSize(1000)) // ; // break; // case DefaultDatabaseType.PostgreSql: // optionsBuilder // .UseNpgsql(connectionString, w => w.MinBatchSize(1).MaxBatchSize(1000)) // ; // break; // case DefaultDatabaseType.Oracle: // optionsBuilder // .UseOracle(connectionString, w => w.MinBatchSize(1).MaxBatchSize(1000)) // ; // break; // default: // break; // } // if (_webHostEnvironment.IsDevelopment()) // { // // sql 日志写入控制台 // var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole(configure => // { // configure.LogToStandardErrorThreshold = LogLevel.Error; // })); // optionsBuilder.UseLoggerFactory(loggerFactory) // //.EnableDetailedErrors() // //.EnableSensitiveDataLogging(true) // ; // } // // 懒加载代理 // //options.UseLazyLoadingProxies(); // //添加 EFCore 监控 和 动态表名 // optionsBuilder.AddEntityFrameworkMonitor(repositoryOptions.IsMonitorEFCore); // optionsBuilder.AddInterceptors(new AuditInterceptor()); // } // /// // /// 模型创建 // /// // /// // protected override void OnModelCreating(ModelBuilder modelBuilder) // { // var dbContextConfigAttribute = GetType().GetCustomAttribute()!; // dbContextConfigAttribute!.OnModelCreating(modelBuilder, dbContextConfigAttribute.GetModelTypes(GetType())); // #region 自动迁移种子数据 // //ModelBuilderExtensions.Seed(modelBuilder); // #endregion // } // /// // /// // /// // /// // public List GetDbTableInfo() // { // var list = this.UnitOfWork.FreeSqlOrm.DbFirst.GetTablesByDatabase(); // list.ForEach(item => item.Schema = AppDataBaseType.Ext.ToString()); // return list; // } //}