From adc66987c00e265dc02c52f35c249b729a6ececf Mon Sep 17 00:00:00 2001 From: SHM Date: Fri, 29 Aug 2025 14:37:57 +0900 Subject: [PATCH] =?UTF-8?q?[=EC=84=B1=ED=98=84=EB=AA=A8]=20TRA=20GetDBCont?= =?UTF-8?q?ext=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Projects/DLL/SystemX.Core.dll | Bin 53760 -> 53760 bytes .../Services/DBContextProvider.cs | 4 +- .../Web.Tra/Components/Pages/TRA.razor | 7 +- Projects/WebClient/Web.Tra/Program.cs | 38 ++++-- .../Web.Tra/Services/CPXV2LogService.cs | 113 ++++++++++++++++++ 5 files changed, 148 insertions(+), 14 deletions(-) create mode 100644 Projects/WebClient/Web.Tra/Services/CPXV2LogService.cs diff --git a/Projects/DLL/SystemX.Core.dll b/Projects/DLL/SystemX.Core.dll index 12d2465e9f97f6c87b23a0c0265a081bc356d2f3..fc5c0055eee387e9262670d2969816e5753b5a71 100644 GIT binary patch delta 14672 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 delta 14463 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 BIPL%d diff --git a/Projects/SystemX.Core/SystemX.Core/Services/DBContextProvider.cs b/Projects/SystemX.Core/SystemX.Core/Services/DBContextProvider.cs index 07a9e43..c15cada 100644 --- a/Projects/SystemX.Core/SystemX.Core/Services/DBContextProvider.cs +++ b/Projects/SystemX.Core/SystemX.Core/Services/DBContextProvider.cs @@ -12,7 +12,7 @@ namespace SystemX.Core.Services { public class DbContextProvider { - private Dictionary DBDictionary = new Dictionary(); + public Dictionary DBDictionary { get; private set; } = new Dictionary(); public void SetDBList(IList? DBList) { @@ -40,6 +40,6 @@ namespace SystemX.Core.Services } return null; - } + } } } diff --git a/Projects/WebClient/Web.Tra/Components/Pages/TRA.razor b/Projects/WebClient/Web.Tra/Components/Pages/TRA.razor index e4b4e2a..ed1e8a9 100644 --- a/Projects/WebClient/Web.Tra/Components/Pages/TRA.razor +++ b/Projects/WebClient/Web.Tra/Components/Pages/TRA.razor @@ -1,7 +1,12 @@ @page "/tra" +@using Web.Tra.Services +@inject CPXV2LogService CPXV2LogService

TRA

@code { - + protected override async Task OnInitializedAsync() + { + CPXV2LogService.Test(); + } } diff --git a/Projects/WebClient/Web.Tra/Program.cs b/Projects/WebClient/Web.Tra/Program.cs index b33edf1..36d8ffb 100644 --- a/Projects/WebClient/Web.Tra/Program.cs +++ b/Projects/WebClient/Web.Tra/Program.cs @@ -4,6 +4,7 @@ using SystemX.Core.Config.Model; using SystemX.Core.DB; using SystemX.Core.Services; using Web.Tra.Components; +using Web.Tra.Services; using WebClient.Library.Config; using WebClient.Library.Model; @@ -26,6 +27,9 @@ var builder = WebApplication.CreateBuilder(args); //singleton builder.Services.AddSingleton>(); +//scoped +builder.Services.AddScoped(); + //db builder.Services.AddSingleton(); // Generic µî·Ï @@ -39,7 +43,7 @@ builder.Services.AddRadzenComponents(); ConfigService preloadConfig = new ConfigService(); if (preloadConfig.OpenConfig($@"{configDir}/{configFileName}") == true) { - var config = preloadConfig.GetConfig(); + var config = preloadConfig.GetConfig(); } else { @@ -74,18 +78,30 @@ if (configService?.OpenConfig($@"{configDir}/{configFileName}") == true) var longTermDB = getDbList.Where(x => x.Name.ToLower().Contains("longterm")).ToList(); List logDb = new List(); - foreach (var db in longTermDB.Select((value,index) => (value, index))) + foreach (var db in longTermDB) { - logDb.Add(new DataBase + try { - DBID = db.index, - DBName = db.value.Name, - IP = "127.0.0.1", - Port = 1433, - UserID = "Alis", - Password = "Kefico!@34", - DBContext = "" - }); + var year = db.Name.Split("_")[1]; + if(Int32.TryParse(year, out var index)) + { + logDb.Add(new DataBase + { + DBID = index, + DBName = db.Name, + IP = "127.0.0.1", + Port = 1433, + UserID = "Alis", + Password = "Kefico!@34", + DBContext = "" + }); + } + } + catch(Exception e) + { + LogXnet.WriteLine("DB Register Exception"); + LogXnet.WriteLine(e); + } } dbProvider.SetDBList(logDb); diff --git a/Projects/WebClient/Web.Tra/Services/CPXV2LogService.cs b/Projects/WebClient/Web.Tra/Services/CPXV2LogService.cs new file mode 100644 index 0000000..d66f630 --- /dev/null +++ b/Projects/WebClient/Web.Tra/Services/CPXV2LogService.cs @@ -0,0 +1,113 @@ +using Azure.Core; +using Microsoft.EntityFrameworkCore; +using System.Data; +using SystemX.Core.DB; +using SystemX.Core.Services; +using WebClient.Library.Config; + +namespace Web.Tra.Services +{ + public class CPXV2LogService + { + private readonly IServiceScopeFactory _scopeFactory; + private readonly ConfigService? _configService; + + public CPXV2LogService(IServiceProvider serviceProvider, IServiceScopeFactory scopeFactory, ConfigService configService) + { + _scopeFactory = scopeFactory; + _configService = configService; + } + public async Task Test() + { + using (var scope = _scopeFactory.CreateScope()) + { + var provider = scope.ServiceProvider.GetRequiredService(); + using (var context = GetDBContext(provider, 1)) + { + if (context is not null) + { + } + } + } + + using (var scope = _scopeFactory.CreateScope()) + { + var provider = scope.ServiceProvider.GetRequiredService(); + using (var context = GetDBContext(provider, 2023)) + { + if (context is not null) + { + } + } + } + + using (var scope = _scopeFactory.CreateScope()) + { + var provider = scope.ServiceProvider.GetRequiredService(); + using (var context = GetDBContext(provider, 2024)) + { + if (context is not null) + { + } + } + } + } + + private T? GetDBContext(DbContextProvider provider, int dbID) where T : DbContext + { + var findDB = provider.DBDictionary.Keys.First(x => x.Contains(dbID.ToString())); + if(string.IsNullOrEmpty(findDB) == false) + { + if (provider.DBDictionary.TryGetValue(findDB, out var dbContext)) + { + return provider?.GetDBContext($"{dbContext.DBName}"); + } + } + + return null; + } + + //public async Task Request_SelectUniqueKey(Request_SelectUniqueKey request, string guid = "") + //{ + // Response_SelectUniqueKy response = new Response_SelectUniqueKy(); + + // if (request != null) + // { + // response.Identity = request.Identity; + // using (var scope = _scopeFactory.CreateScope()) + // { + // var provider = scope.ServiceProvider.GetRequiredService(); + // using (var context = GetUniqueKeyDBContext(provider, 1)) + // { + // if (context is not null) + // { + // try + // { + // using (var transaction = await context.CreateTransactionAsync(IsolationLevel.ReadUncommitted)) + // { + // var data = await context.tUniqueKeyStorages.AsNoTracking().FirstOrDefaultAsync(x => x.cIdentity == request.Identity); + // await context.CloseTransactionAsync(transaction); + // if (data != null) + // { + // response.Data1 = data.cData1; + // response.Data2 = data.cData2; + // response.Data3 = data.cData3; + // response.Data4 = data.cData4; + // response.Data5 = data.cData5; + // } + // } + // } + // catch (Exception e) + // { + // LogXnet.WriteLine($"Select Unique Key Transaction Error::{guid}", LogXLabel.Error); + // LogXnet.WriteLine(e); + // } + // } + // } + // } + // } + + // return response; + //} + } +}