From 088ec7620a7c827f9923c1c2ed1f5e3eaaae4465 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 25 Mar 2024 18:18:41 +0800 Subject: [PATCH] =?UTF-8?q?=E7=B7=B4=E7=BF=92=E8=B3=87=E6=96=99=E5=BA=AB?= =?UTF-8?q?=E7=B4=80=E9=8C=84=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CoreProfilerExample.Common.csproj | 1 + CoreProfilerExample.Common/IDatabaseOption.cs | 14 +++++++ .../Options/DatabaseOption.cs | 30 +++++++++++++++ .../CoreProfilerExample.Repository.csproj | 4 ++ .../Implements/WeatherForecastRepository.cs | 36 +++++++++++++++--- .../DataModels/WeatherForecastDataModel.cs | 2 +- .../Models/Dtos/GetWeatherForecastItemDto.cs | 2 +- .../CoreProfilerExample.csproj | 1 + CoreProfilerExample/CoreProfilerExample.db | Bin 0 -> 12288 bytes .../DependencyInjectionExtension.cs | 7 ++++ .../GetWeatherForecastItemViewModel.cs | 2 +- CoreProfilerExample/Program.cs | 1 + .../appsettings.Development.json | 10 ++--- .../appsettings.Production.json | 3 ++ CoreProfilerExample/appsettings.json | 6 --- .../LastestProfilingResultDetailForDB.JPG | Bin 0 -> 83226 bytes README.md | 22 ++++++++++- 17 files changed, 119 insertions(+), 22 deletions(-) create mode 100644 CoreProfilerExample.Common/IDatabaseOption.cs create mode 100644 CoreProfilerExample.Common/Options/DatabaseOption.cs create mode 100644 CoreProfilerExample/CoreProfilerExample.db create mode 100644 CoreProfilerExample/appsettings.Production.json create mode 100644 CoreProfilerExampleResource/LastestProfilingResultDetailForDB.JPG diff --git a/CoreProfilerExample.Common/CoreProfilerExample.Common.csproj b/CoreProfilerExample.Common/CoreProfilerExample.Common.csproj index 04296cf..be22c5b 100644 --- a/CoreProfilerExample.Common/CoreProfilerExample.Common.csproj +++ b/CoreProfilerExample.Common/CoreProfilerExample.Common.csproj @@ -8,6 +8,7 @@ + diff --git a/CoreProfilerExample.Common/IDatabaseOption.cs b/CoreProfilerExample.Common/IDatabaseOption.cs new file mode 100644 index 0000000..6aa9ce2 --- /dev/null +++ b/CoreProfilerExample.Common/IDatabaseOption.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CoreProfilerExample.Common +{ + public interface IDatabaseOption + { + public IDbConnection SqliteConnection { get; } + } +} diff --git a/CoreProfilerExample.Common/Options/DatabaseOption.cs b/CoreProfilerExample.Common/Options/DatabaseOption.cs new file mode 100644 index 0000000..5f2d7eb --- /dev/null +++ b/CoreProfilerExample.Common/Options/DatabaseOption.cs @@ -0,0 +1,30 @@ +using CoreProfiler; +using CoreProfiler.Data; +using Microsoft.Data.Sqlite; +using Microsoft.Extensions.Configuration; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CoreProfilerExample.Common.Options +{ + public class DatabaseOption(IConfiguration configuration) : IDatabaseOption + { + public IDbConnection SqliteConnection + { + get + { + var connectionString = configuration.GetConnectionString("SQLITE"); + + var dbProfiler = ProfilingSession.Current != null + ? new DbProfiler(ProfilingSession.Current.Profiler) + : null; + + return new ProfiledDbConnection(new SqliteConnection(connectionString), dbProfiler); + } + } + } +} diff --git a/CoreProfilerExample.Repository/CoreProfilerExample.Repository.csproj b/CoreProfilerExample.Repository/CoreProfilerExample.Repository.csproj index e4acc0c..e79e187 100644 --- a/CoreProfilerExample.Repository/CoreProfilerExample.Repository.csproj +++ b/CoreProfilerExample.Repository/CoreProfilerExample.Repository.csproj @@ -6,6 +6,10 @@ enable + + + + diff --git a/CoreProfilerExample.Repository/Implements/WeatherForecastRepository.cs b/CoreProfilerExample.Repository/Implements/WeatherForecastRepository.cs index 494fb17..3636ba9 100644 --- a/CoreProfilerExample.Repository/Implements/WeatherForecastRepository.cs +++ b/CoreProfilerExample.Repository/Implements/WeatherForecastRepository.cs @@ -1,23 +1,47 @@ -using CoreProfilerExample.Common.Extensions; +using CoreProfiler; +using CoreProfilerExample.Common; +using CoreProfilerExample.Common.Extensions; using CoreProfilerExample.Repository.Interfaces; using CoreProfilerExample.Repository.Models.DataModels; +using Dapper; using System.Reflection; using static CoreProfilerExample.Common.Constants.WeatherConstant; namespace CoreProfilerExample.Repository.Implements { - public class WeatherForecastRepository : IWeatherForecastRepository + public class WeatherForecastRepository(IDatabaseOption option) : IWeatherForecastRepository { - public Task> GetAsync(int days) + public async Task> GetAsync(int days) { + var type = MethodBase.GetCurrentMethod()?.DeclaringType; + + var name = MethodBase.GetCurrentMethod()?.Name; + using (MethodBase.GetCurrentMethod()?.ProfilingStep()) { - return Task.Run(() => days > 0 ? Enumerable.Range(1, days).Select(index => new WeatherForecastDataModel + var forecasts = days > 0 ? Enumerable.Range(1, days).Select(index => new WeatherForecastDataModel { - Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)), + Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)).ToString(), TemperatureC = Random.Shared.Next(-20, 55), Summary = WeatherSummaries[Random.Shared.Next(WeatherSummaries.Length)] - }) : []); + }) : []; + + var sql = @"INSERT INTO [WeatherForecast] ( + [Date], + [TemperatureC], + [Summary] + ) + VALUES ( + @Date, + @TemperatureC, + @Summary + )"; + + using var connection = option.SqliteConnection; + + await connection.ExecuteAsync(sql, forecasts); + + return forecasts; } } } diff --git a/CoreProfilerExample.Repository/Models/DataModels/WeatherForecastDataModel.cs b/CoreProfilerExample.Repository/Models/DataModels/WeatherForecastDataModel.cs index c8ee910..9febc42 100644 --- a/CoreProfilerExample.Repository/Models/DataModels/WeatherForecastDataModel.cs +++ b/CoreProfilerExample.Repository/Models/DataModels/WeatherForecastDataModel.cs @@ -2,7 +2,7 @@ { public class WeatherForecastDataModel { - public DateOnly Date { get; set; } + public string Date { get; set; } = null!; public int TemperatureC { get; set; } diff --git a/CoreProfilerExample.Service/Models/Dtos/GetWeatherForecastItemDto.cs b/CoreProfilerExample.Service/Models/Dtos/GetWeatherForecastItemDto.cs index 0565875..4f3d5da 100644 --- a/CoreProfilerExample.Service/Models/Dtos/GetWeatherForecastItemDto.cs +++ b/CoreProfilerExample.Service/Models/Dtos/GetWeatherForecastItemDto.cs @@ -2,7 +2,7 @@ { public class GetWeatherForecastItemDto { - public DateOnly Date { get; set; } + public string Date { get; set; } = null!; public int TemperatureC { get; set; } diff --git a/CoreProfilerExample/CoreProfilerExample.csproj b/CoreProfilerExample/CoreProfilerExample.csproj index 7118ec8..f5a580e 100644 --- a/CoreProfilerExample/CoreProfilerExample.csproj +++ b/CoreProfilerExample/CoreProfilerExample.csproj @@ -8,6 +8,7 @@ + diff --git a/CoreProfilerExample/CoreProfilerExample.db b/CoreProfilerExample/CoreProfilerExample.db new file mode 100644 index 0000000000000000000000000000000000000000..f44befeb7feeab3758013fdf5d1ab19cc42fba5d GIT binary patch literal 12288 zcmeI&O;5rw7zgl{7s*U?CQ8tgbtec$4ETBzu__U!jv3`-Dyc%UfsS$Ds8_#*U&Bw~ z*U)(NY-@zXT|DXO-=tfg_Sv)ScYBgGPHUY|vg=;pi;$Jb455_lFh&STsTo&uG^ko6 zMuEEP__vWFE7z}6Dl0bqLCiyS!GHh+AOHafKmY;|fB*y_009X6o4`qIB9qV4W+<*a z*}wBt3w+s^cLUjNMZRmmhFvS%rHdl$PQ03s*<3^lxP#!a*P_mSLaOxl^s^ zgT}!3MKBy^o;cNd*=e#P-puNftbFDkS8etFI=9{2WKQ?yN%N7IZ{~~nY(A+a1_U4g z0SG_<0uX=z1Rwwb2tWV=e6?Xd{w&oe=~4bh>RbfA?*FOzruzTC`!H0700bZa e0SG_<0uX=z1Rwwb2teT91ZHVGPb2>tBtHRDfPvNk literal 0 HcmV?d00001 diff --git a/CoreProfilerExample/Infrastructure/Extensions/DependencyInjectionExtension.cs b/CoreProfilerExample/Infrastructure/Extensions/DependencyInjectionExtension.cs index b8eda56..baf4980 100644 --- a/CoreProfilerExample/Infrastructure/Extensions/DependencyInjectionExtension.cs +++ b/CoreProfilerExample/Infrastructure/Extensions/DependencyInjectionExtension.cs @@ -1,4 +1,5 @@ using CoreProfiler.Web; +using CoreProfilerExample.Common; using CoreProfilerExample.Common.Options; using CoreProfilerExample.Repository.Implements; using CoreProfilerExample.Repository.Interfaces; @@ -9,6 +10,12 @@ namespace CoreProfilerExample.Infrastructure.Extensions { public static class DependencyInjectionExtension { + public static IServiceCollection AddOption(this IServiceCollection services) + { + services.AddScoped(); + return services; + } + public static IServiceCollection AddRepository(this IServiceCollection services) { services.AddScoped(); diff --git a/CoreProfilerExample/Models/ViewModels/GetWeatherForecastItemViewModel.cs b/CoreProfilerExample/Models/ViewModels/GetWeatherForecastItemViewModel.cs index fae57c1..a50c68b 100644 --- a/CoreProfilerExample/Models/ViewModels/GetWeatherForecastItemViewModel.cs +++ b/CoreProfilerExample/Models/ViewModels/GetWeatherForecastItemViewModel.cs @@ -2,7 +2,7 @@ { public class GetWeatherForecastItemViewModel { - public DateOnly Date { get; set; } + public string Date { get; set; } = null!; public int TemperatureC { get; set; } diff --git a/CoreProfilerExample/Program.cs b/CoreProfilerExample/Program.cs index f7e249a..7d98ef2 100644 --- a/CoreProfilerExample/Program.cs +++ b/CoreProfilerExample/Program.cs @@ -4,6 +4,7 @@ var builder = WebApplication.CreateBuilder(args); // Add services to the container. #region CoreProfilerExample +builder.Services.AddOption(); builder.Services.AddRepository(); builder.Services.AddService(); #endregion diff --git a/CoreProfilerExample/appsettings.Development.json b/CoreProfilerExample/appsettings.Development.json index 0c208ae..599eabe 100644 --- a/CoreProfilerExample/appsettings.Development.json +++ b/CoreProfilerExample/appsettings.Development.json @@ -1,8 +1,6 @@ { - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } - } + "ConnectionStrings": { + "SQLITE": "Data Source=CoreProfilerExample.db" + }, + "AllowedHosts": "*" } diff --git a/CoreProfilerExample/appsettings.Production.json b/CoreProfilerExample/appsettings.Production.json new file mode 100644 index 0000000..6b85907 --- /dev/null +++ b/CoreProfilerExample/appsettings.Production.json @@ -0,0 +1,3 @@ +{ + "AllowedHosts": "*" +} \ No newline at end of file diff --git a/CoreProfilerExample/appsettings.json b/CoreProfilerExample/appsettings.json index 10f68b8..4faf77a 100644 --- a/CoreProfilerExample/appsettings.json +++ b/CoreProfilerExample/appsettings.json @@ -1,9 +1,3 @@ { - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } - }, "AllowedHosts": "*" } diff --git a/CoreProfilerExampleResource/LastestProfilingResultDetailForDB.JPG b/CoreProfilerExampleResource/LastestProfilingResultDetailForDB.JPG new file mode 100644 index 0000000000000000000000000000000000000000..41ae0a77886253ab1c496cc8420614058b851fbd GIT binary patch literal 83226 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

hHPTWx3^o)V;S*zD)Z&2hdr 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 Z{okfxbt#9x2E70O^?&{|@c*;)KLCSsY6t)T literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 7de1725..ff08429 100644 --- a/README.md +++ b/README.md @@ -116,4 +116,24 @@ public static IApplicationBuilder UseCoreProfiler(this IApplicationBuilder app) ¬ö¿ýªº¸Ô²Ó¦p¤U: -![LastestProfilingResultDetail](CoreProfilerExampleResource/LastestProfilingResultDetail.JPG) \ No newline at end of file +![LastestProfilingResultDetail](CoreProfilerExampleResource/LastestProfilingResultDetail.JPG) + +## CoreProfiler extends DB + +CoreProfiler¤]¥i¥Î©ó¬ö¿ýSQL°õ¦æ¡A±N­ì¥»¸ê®Æ®w¨Ï¥ÎªºConnection´À´«¦¨CoreProfiler¹ê§@ªºConnection´N¥i¥H¬ö¿ý°õ¦æªºT-SQL«ü¥O¡C + +´À´«¤èªk¦p¤U: + +```C# +var connectionString = configuration.GetConnectionString("SQLITE"); + +var dbProfiler = ProfilingSession.Current != null + ? new DbProfiler(ProfilingSession.Current.Profiler) + : null; + +return new ProfiledDbConnection(new SqliteConnection(connectionString), dbProfiler); +``` + +¦b´À´«¤§«e¡A¥ý½T»{CoreProfiler¬O§_¦³¹B¦æªº¹êÅé¡A¤~´À´«¸ê®Æ®w³s½u¡A°õ¦æµ²ªG¦p¤U: + +![LastestProfilingResultDetailForDB](CoreProfilerExampleResource/LastestProfilingResultDetailForDB.JPG) \ No newline at end of file