From 6a3c10c95899fa06884533005c6771a230809df6 Mon Sep 17 00:00:00 2001 From: SHM Date: Tue, 22 Apr 2025 14:47:12 +0900 Subject: [PATCH] =?UTF-8?q?[=EC=84=B1=ED=98=84=EB=AA=A8]=20DB=20Connection?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DBPatch/sqlScripts/dacpac/HubX.DB.dacpac | Bin 3047 -> 3048 bytes Projects/HubX/HubX.Server/Program.cs | 5 + .../HubX.Server/Services/UniqueKeyService.cs | 172 ++++++++++-------- 3 files changed, 97 insertions(+), 80 deletions(-) diff --git a/Projects/HubX/DBPatch/sqlScripts/dacpac/HubX.DB.dacpac b/Projects/HubX/DBPatch/sqlScripts/dacpac/HubX.DB.dacpac index 3ee1bbe4c947f94e6afadc70eebb42cebb81fb8f..a1bb94a44179c92bc77e057869eb2accd29ca70d 100644 GIT binary patch delta 676 zcmV;V0$cs(7w8uZP)h>@6aWAK2mm&6u?+D90yc89{{({p0yc7!ga+sdHgc9)Hrc9p zDU)>vG=FZKFcjTa>OUa14fr(%W&}hG6Qrt26DiZ~4Vc6lz!Te4Nq?=2eo}v-CIhso zCaa1KzW1Jcj?cCI>&MUd@~LZ`Z(M01`@}^)bRFJTvKIY);trPCrs z(K{B<>%@I9=C}bsR}Z{n+V4cAq?V2GE7<}4*neuSY+F#X3fyreSS!9WV@Uvp2m^>+ z+tqR6TUH&|J-=1*$dwUXzl3e#>q%2ed^mnFm;+Njm%U-4*H=$RsSK}o%&@d!mNy1x za}(~)D9*a6+06Eb&pG8kvyLb3h;vhXUcp-!er)A)$9prXP@)`+RN76^8~Xrf1jXRI zEr0QiUA?$Cqd(S`NSNmok&u!SN8SpO(pzB~c+hv(wSV_=jQl;*2fKJ|FPzDc1O=1-7k^GZv}RB|>G@z3vo*Iv*^25Df8NUj?~@Xe zhBje?P)#8t%-Z-D?`tXZ6vp=0w+8uWDgS3eQ}iS;{oixHuuT0<^L{PK@Z(> z8|HxXMTx`(oveB5+nea7Sr~0G3AQ=Rx4Ves>kQLvkzK7bWEWvkpn?=zOrv5)^EM2x z^C&AQE@)u?ifmWd+cNc@q`c;iuScqr*4Y>AuVZi~Zl4LTyc6kfP)h>@6aWAK2mm&6 zliCT~0yc7!xC%7_Hgc2i3OE8ba+4_wI|(*&mRdI1s(2}rZ3`~~Hgc1m3mgH@le-Hh K2CE7H0001Uxi{DV delta 675 zcmV;U0$ly*7v~oYP)h>@6aWAK2mrZau?+D90=Z(d{{({p0=Z(7ga+sdxnh=DG3B91 zD3f&uG=GkpFcjTa>OUa19q@xdAOc2&1gWZ~6Deu;4w%FW;EZjmNq?=2eo}v-CIQ-1 z%&KC8@4e@q<8y8Q`tdV-e61_v8x@lACNhx?O@lT$FIaPk%vP0_Z$8HF--RoZKMQtX zjiCXJjLf4_=LG;VKhl~=yJorIl9$TPc@5-CC4Z^VZ9zeDu%&{LihU161`wON zt6_v2lAp+dZUjG5p%|6duugovX^I^ic3%jFK%Y-}qX=u{`t{6(qQ#0R5|>2thF~(+ zs#77@zExaEGe&Rh155}C!L%*m zvwvP)T^!IK3r)n-B`$p@pTUA!)W>sc=6Hog_QqRmz3Q2aEWl+Ipz z$9W~~?e!ShJ0eed@lrh)y&)0udjB7cw12HsD`?cvRtchOHtoJ*`6qhW@e^&LJ#`bG zfbm7J$OJVnXl3i0XvWFhUt-5wrZ8Qud?yVO>@Krp9VAFE=2?a^CtK=qW-B*Ma5a$n zN#^3r_4HqstTKID`rf^id+zY5qq=Dwe8F}Qf{D0(CcyYk#J>ShO9KQH000080J&n5 z+X>tPxnh&K3N-?`Vw3O+I0Ct1lPU{43AtjHS~2CJNGOwT3oin>Vw0Z>90AUgybC4< JstN!A002HFJgWcz diff --git a/Projects/HubX/HubX.Server/Program.cs b/Projects/HubX/HubX.Server/Program.cs index bd3bbe9..b9ebe4d 100644 --- a/Projects/HubX/HubX.Server/Program.cs +++ b/Projects/HubX/HubX.Server/Program.cs @@ -1,11 +1,14 @@ +using DB.HubXDB; using HubX.Library.Config; using HubX.Library.Socket.Session; using HubX.Server; using HubX.Server.Services; using HubX.Server.TaskManager; +using Microsoft.EntityFrameworkCore; using System.Net; using System.Net.Sockets; using SystemX.Core.Communication; +using SystemX.Core.DB; using SystemX.Core.Services; string configDir = @"../Config"; @@ -49,6 +52,8 @@ else return; } +builder.Services.AddDbContext(); + var app = builder.Build(); //read api config and set diff --git a/Projects/HubX/HubX.Server/Services/UniqueKeyService.cs b/Projects/HubX/HubX.Server/Services/UniqueKeyService.cs index dd3ed19..61bd8f2 100644 --- a/Projects/HubX/HubX.Server/Services/UniqueKeyService.cs +++ b/Projects/HubX/HubX.Server/Services/UniqueKeyService.cs @@ -3,7 +3,9 @@ using HubX.Library.Enums; using HubX.Library.Http.Packet; using Microsoft.EntityFrameworkCore; using Microsoft.Identity.Client.Extensions.Msal; +using System; using System.Data; +using System.Xml; using SystemX.Core.DB; namespace HubX.Server.Services @@ -11,10 +13,12 @@ namespace HubX.Server.Services public class UniqueKeyService { private readonly EFCoreService _efCoreService; + private readonly IServiceScopeFactory _scopeFactory; - public UniqueKeyService(EFCoreService efCoreService) + public UniqueKeyService(EFCoreService efCoreService, IServiceScopeFactory scopeFactory) { _efCoreService = efCoreService; + _scopeFactory = scopeFactory; } public async Task Request_InsertUniqueKey(Request_InsertUniqueKey request) @@ -25,48 +29,50 @@ namespace HubX.Server.Services { response.Identity = request.Identity; - bool transactionResult = true; - var context = _efCoreService.GetDBContext(); - if (context != null) + bool transactionResult = true; + using (var scope = _scopeFactory.CreateScope()) { - var data = context.TStorages.Where(x=>x.CIdentity == request.Identity); - if (data?.Count() > 0) + var context = scope.ServiceProvider.GetRequiredService(); + if (context != null) { - Log4net.WriteLine($"Exist Unique Key", LogType.Error); - response.Result = "Exist Unique Key"; - } - else - { - var storage = new TStorage + var data = context.TStorages.AsNoTracking().Where(x => x.CIdentity == request.Identity).ToList(); + if (data?.Count() > 0) { - CIdentity = request.Identity, - CData1 = request.Data1, - CData2 = request.Data2, - CData3 = request.Data3, - CData4 = request.Data4, - CData5 = request.Data5, - - CDateTime = DateTime.Now - }; - - using (var transaction = await context.CreateTransactionAsync()) - { - await context.AddAsync(storage); - transactionResult = await context.CloseTransactionAsync(transaction); - } - - //db error - if (transactionResult == false) - { - response.Result = EnumResult.Failed.ToString(); - Log4net.WriteLine($"Transaction Error", LogType.Error); + Log4net.WriteLine($"Exist Unique Key", LogType.Error); + response.Result = "Exist Unique Key"; } else { - Log4net.WriteLine($"Transaction Success", LogType.DB); + var storage = new TStorage + { + CIdentity = request.Identity, + CData1 = request.Data1, + CData2 = request.Data2, + CData3 = request.Data3, + CData4 = request.Data4, + CData5 = request.Data5, + + CDateTime = DateTime.Now + }; + using (var transaction = await context.CreateTransactionAsync()) + { + await context.AddAsync(storage); + transactionResult = await context.CloseTransactionAsync(transaction); + } + + //db error + if (transactionResult == false) + { + response.Result = EnumResult.Failed.ToString(); + Log4net.WriteLine($"Transaction Error", LogType.Error); + } + else + { + Log4net.WriteLine($"Transaction Success", LogType.DB); + } } - } - } + } + } } return response; @@ -79,31 +85,33 @@ namespace HubX.Server.Services if (request != null) { response.Identity = request.Identity; - - var context = _efCoreService.GetDBContext(); - if (context != null) - { - try + using (var scope = _scopeFactory.CreateScope()) + { + var context = scope.ServiceProvider.GetRequiredService(); + if (context != null) { - using (var transaction = await context.CreateTransactionAsync(IsolationLevel.ReadUncommitted)) + try { - var data = context.TStorages.AsNoTracking().First(x=>x.CIdentity == request.Identity); - await context.CloseTransactionAsync(transaction); - if(data != null) + using (var transaction = await context.CreateTransactionAsync(IsolationLevel.ReadUncommitted)) { - response.Data1 = data.CData1; - response.Data2 = data.CData2; - response.Data3 = data.CData3; - response.Data4 = data.CData4; - response.Data5 = data.CData5; + var data = context.TStorages.AsNoTracking().ToList().First(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) + { + Log4net.WriteLine($"Select Unique Key Transaction Error", LogType.Error); + Log4net.WriteLine(e); + } } - catch (Exception e) - { - Log4net.WriteLine($"Select Unique Key Transaction Error", LogType.Error); - Log4net.WriteLine(e); - } } } @@ -119,35 +127,39 @@ namespace HubX.Server.Services response.Identity = request.Identity; bool transactionResult = true; - var context = _efCoreService.GetDBContext(); - if (context != null) + + using (var scope = _scopeFactory.CreateScope()) { - var selected = context.TStorages.First(x => x.CIdentity == request.Identity); - if (selected != null) + var context = scope.ServiceProvider.GetRequiredService(); + if (context != null) { - selected.CData1 = request.Data1; - selected.CData2 = request.Data2; - selected.CData3 = request.Data3; - selected.CData4 = request.Data4; - selected.CData5 = request.Data5; - - using (var transaction = await context.CreateTransactionAsync()) + var selected = context.TStorages.First(x => x.CIdentity == request.Identity); + if (selected != null) { - context.Update(selected); - transactionResult = await context.CloseTransactionAsync(transaction); - } - } - } + selected.CData1 = request.Data1; + selected.CData2 = request.Data2; + selected.CData3 = request.Data3; + selected.CData4 = request.Data4; + selected.CData5 = request.Data5; - //db error - if (transactionResult == false) - { - response.Result = EnumResult.Failed.ToString(); - Log4net.WriteLine($"Transaction Error", LogType.Error); - } - else - { - Log4net.WriteLine($"Transaction Success", LogType.DB); + using (var transaction = await context.CreateTransactionAsync()) + { + context.Update(selected); + transactionResult = await context.CloseTransactionAsync(transaction); + } + } + } + + //db error + if (transactionResult == false) + { + response.Result = EnumResult.Failed.ToString(); + Log4net.WriteLine($"Transaction Error", LogType.Error); + } + else + { + Log4net.WriteLine($"Transaction Success", LogType.DB); + } } }