From db52c869ea194be202750c91314a37dfc8108dbf Mon Sep 17 00:00:00 2001
From: bicijinlian <bicijinlian@163.com>
Date: Tue, 30 May 2023 18:53:58 +0800
Subject: [PATCH] =?UTF-8?q?feats:=20=E6=9B=B4=E6=96=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../EFCore7Study.BlazorServerApp.csproj       |   8 +
 .../EFCore7Study.BlazorWasmApp.csproj         |   1 +
 .../EFCore7Study.CoreConsoleApp.csproj        |   9 +
 EFCore7Study.CoreConsoleApp/Program.cs        | 275 +++++++++++++++++-
 .../EFCore7Study.DataService.Tests.csproj     |   1 +
 EFCore7Study.DataService/AppDbContext.cs      |  51 ++++
 EFCore7Study.DataService/Class1.cs            |   7 -
 .../EFCore7Study.DataService.csproj           |   2 +
 EFCore7Study.DataService/Models/Account.cs    |  17 ++
 .../EFCore7Study.WebApi.csproj                |   1 +
 .../EFCore7Study.WebApp.csproj                |   4 +
 11 files changed, 367 insertions(+), 9 deletions(-)
 create mode 100644 EFCore7Study.DataService/AppDbContext.cs
 delete mode 100644 EFCore7Study.DataService/Class1.cs
 create mode 100644 EFCore7Study.DataService/Models/Account.cs

diff --git a/EFCore7Study.BlazorServerApp/EFCore7Study.BlazorServerApp.csproj b/EFCore7Study.BlazorServerApp/EFCore7Study.BlazorServerApp.csproj
index 4c2bb77..dbd114e 100644
--- a/EFCore7Study.BlazorServerApp/EFCore7Study.BlazorServerApp.csproj
+++ b/EFCore7Study.BlazorServerApp/EFCore7Study.BlazorServerApp.csproj
@@ -6,4 +6,12 @@
     <ImplicitUsings>enable</ImplicitUsings>
   </PropertyGroup>
 
+  <ItemGroup>
+    <PackageReference Include="Microsoft.DependencyValidation.Analyzers" Version="0.11.0" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\EFCore7Study.DataService\EFCore7Study.DataService.csproj" />
+  </ItemGroup>
+
 </Project>
diff --git a/EFCore7Study.BlazorWasmApp/EFCore7Study.BlazorWasmApp.csproj b/EFCore7Study.BlazorWasmApp/EFCore7Study.BlazorWasmApp.csproj
index fed7172..89233fb 100644
--- a/EFCore7Study.BlazorWasmApp/EFCore7Study.BlazorWasmApp.csproj
+++ b/EFCore7Study.BlazorWasmApp/EFCore7Study.BlazorWasmApp.csproj
@@ -9,6 +9,7 @@
   <ItemGroup>
     <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="7.0.5" />
     <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="7.0.5" PrivateAssets="all" />
+    <PackageReference Include="Microsoft.DependencyValidation.Analyzers" Version="0.11.0" />
   </ItemGroup>
 
 </Project>
diff --git a/EFCore7Study.CoreConsoleApp/EFCore7Study.CoreConsoleApp.csproj b/EFCore7Study.CoreConsoleApp/EFCore7Study.CoreConsoleApp.csproj
index f02677b..2dd57ec 100644
--- a/EFCore7Study.CoreConsoleApp/EFCore7Study.CoreConsoleApp.csproj
+++ b/EFCore7Study.CoreConsoleApp/EFCore7Study.CoreConsoleApp.csproj
@@ -7,4 +7,13 @@
     <Nullable>enable</Nullable>
   </PropertyGroup>
 
+  <ItemGroup>
+    <PackageReference Include="Microsoft.DependencyValidation.Analyzers" Version="0.11.0" />
+    <PackageReference Include="Spectre.Console" Version="0.47.0" />
+  </ItemGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\EFCore7Study.DataService\EFCore7Study.DataService.csproj" />
+  </ItemGroup>
+
 </Project>
diff --git a/EFCore7Study.CoreConsoleApp/Program.cs b/EFCore7Study.CoreConsoleApp/Program.cs
index 89a1036..580f256 100644
--- a/EFCore7Study.CoreConsoleApp/Program.cs
+++ b/EFCore7Study.CoreConsoleApp/Program.cs
@@ -1,10 +1,281 @@
-namespace EFCore7Study.CoreConsoleApp
+using EFCore7Study.DataService;
+
+using Spectre.Console;
+
+namespace EFCore7Study.CoreConsoleApp
 {
     internal class Program
     {
         static void Main(string[] args)
         {
-            Console.WriteLine("Hello, World!");
+            AnsiConsole.Status()
+            .Spinner(Spinner.Known.BouncingBar)
+            .Start("测试一个", ctx =>
+            {
+                ctx.Spinner(Spinner.Known.BouncingBar);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Aesthetic));
+
+                ctx.Spinner(Spinner.Known.Arc);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Arc));
+
+                ctx.Spinner(Spinner.Known.Arrow);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Arrow));
+
+                ctx.Spinner(Spinner.Known.Arrow2);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Arrow2));
+
+                ctx.Spinner(Spinner.Known.Arrow3);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Arrow3));
+
+                ctx.Spinner(Spinner.Known.Balloon);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Balloon));
+
+                ctx.Spinner(Spinner.Known.Balloon2);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Balloon2));
+
+                ctx.Spinner(Spinner.Known.BetaWave);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.BetaWave));
+
+                ctx.Spinner(Spinner.Known.Bounce);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Bounce));
+
+                ctx.Spinner(Spinner.Known.BouncingBall);
+                Thread.Sleep(3000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.BouncingBall));
+
+                ctx.Spinner(Spinner.Known.BouncingBar);
+                Thread.Sleep(3000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.BouncingBar));
+
+                ctx.Spinner(Spinner.Known.BoxBounce);
+                Thread.Sleep(3000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.BoxBounce));
+
+                ctx.Spinner(Spinner.Known.BoxBounce2);
+                Thread.Sleep(3000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.BoxBounce2));
+
+                ctx.Spinner(Spinner.Known.Dots8Bit);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Dots8Bit));
+
+                ctx.Spinner(Spinner.Known.Christmas);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Christmas));
+
+                ctx.Spinner(Spinner.Known.Circle);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Circle));
+
+                ctx.Spinner(Spinner.Known.CircleHalves);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.CircleHalves));
+
+                ctx.Spinner(Spinner.Known.CircleQuarters);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.CircleQuarters));
+
+                ctx.Spinner(Spinner.Known.Clock);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Clock));
+
+                ctx.Spinner(Spinner.Known.Default);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Default));
+
+                ctx.Spinner(Spinner.Known.Dots);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Dots));
+
+                ctx.Spinner(Spinner.Known.Dots2);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Dots2));
+
+                ctx.Spinner(Spinner.Known.Dots8Bit);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Dots8Bit));
+                //========================================================
+                ctx.Spinner(Spinner.Known.Dqpb);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Dqpb));
+
+                ctx.Spinner(Spinner.Known.Earth);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Earth));
+
+                ctx.Spinner(Spinner.Known.Flip);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Flip));
+
+                ctx.Spinner(Spinner.Known.Grenade);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Grenade));
+
+                ctx.Spinner(Spinner.Known.GrowHorizontal);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.GrowHorizontal));
+
+                ctx.Spinner(Spinner.Known.GrowVertical);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.GrowVertical));
+
+                ctx.Spinner(Spinner.Known.Hamburger);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Hamburger));
+                Thread.Sleep(2000);
+
+                ctx.Spinner(Spinner.Known.Hearts);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Hearts));
+
+                ctx.Spinner(Spinner.Known.Layer);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Layer));
+
+                ctx.Spinner(Spinner.Known.Line);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Line));
+
+                ctx.Spinner(Spinner.Known.Line2);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Line2));
+
+                ctx.Spinner(Spinner.Known.Material);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Material));
+
+                ctx.Spinner(Spinner.Known.Monkey);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Monkey));
+
+                ctx.Spinner(Spinner.Known.Moon);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Moon));
+
+                ctx.Spinner(Spinner.Known.Noise);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Noise));
+
+                ctx.Spinner(Spinner.Known.Pipe);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Pipe));
+
+                ctx.Spinner(Spinner.Known.Point);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Dots8Bit));
+
+                ctx.Spinner(Spinner.Known.Pong);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Pong));
+
+                ctx.Spinner(Spinner.Known.Runner);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Runner));
+
+                ctx.Spinner(Spinner.Known.Shark);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Shark));
+
+                ctx.Spinner(Spinner.Known.SimpleDots);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.SimpleDots));
+
+                ctx.Spinner(Spinner.Known.SimpleDotsScrolling);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.SimpleDotsScrolling));
+
+                ctx.Spinner(Spinner.Known.Smiley);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Smiley));
+
+                ctx.Spinner(Spinner.Known.SquareCorners);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.SquareCorners));
+
+                ctx.Spinner(Spinner.Known.Squish);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Squish));
+
+                ctx.Spinner(Spinner.Known.Star);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Star));
+
+                ctx.Spinner(Spinner.Known.Star2);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Star2));
+
+                ctx.Spinner(Spinner.Known.Toggle);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Toggle));
+
+                ctx.Spinner(Spinner.Known.Toggle2);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Toggle2));
+
+                ctx.Spinner(Spinner.Known.Triangle);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Triangle));
+
+                ctx.Spinner(Spinner.Known.Weather);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Weather));
+
+                ctx.Spinner(Spinner.Known.Weather);
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine(nameof(Spinner.Known.Weather));
+            });
+
+
+            AnsiConsole.Status()
+            .Spinner(Spinner.Known.Balloon)
+            .Start("准备查询数据库...", ctx =>
+            {
+                Thread.Sleep(2000);
+
+                // 生成查询对象
+                ctx.Status("生成查询对象...");
+                AppDbContext dbContext = new AppDbContext();
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine("生成查询对象: DbContext, 完成!");
+
+                // 连接数据库
+                ctx.Status("正在连接到数据库服务器...");
+                ctx.Spinner(Spinner.Known.Balloon);
+                ctx.SpinnerStyle(Style.Parse("green"));
+                Thread.Sleep(2000);
+                AnsiConsole.MarkupLine("已连接到数据库服务器!");
+
+
+                // 查询数据
+                ctx.Status("正在查询数据...");
+                ctx.Spinner(Spinner.Known.Star2);
+                ctx.SpinnerStyle(Style.Parse("yellow"));
+                Thread.Sleep(3000);
+                AnsiConsole.MarkupLine("完成查询!");
+
+
+                //输出查询结果
+                ctx.Status("输出查询结果...");
+                ctx.Spinner(Spinner.Known.Arrow);
+                ctx.SpinnerStyle(Style.Parse("red"));
+
+                dbContext.Accounts.ToList().ForEach(x =>
+               {
+                   AnsiConsole.MarkupLine($"标识:{x.Id},编号:{x.Code}, 姓名:{x.Name.PadRight(10)},年龄:{x.Age}, 密码:{x.Pwd}");
+                   Thread.Sleep(300);
+               });
+
+                AnsiConsole.MarkupLine("任务完成!");
+
+            });
         }
     }
 }
\ No newline at end of file
diff --git a/EFCore7Study.DataService.Tests/EFCore7Study.DataService.Tests.csproj b/EFCore7Study.DataService.Tests/EFCore7Study.DataService.Tests.csproj
index 5e9fe29..02b456a 100644
--- a/EFCore7Study.DataService.Tests/EFCore7Study.DataService.Tests.csproj
+++ b/EFCore7Study.DataService.Tests/EFCore7Study.DataService.Tests.csproj
@@ -10,6 +10,7 @@
   </PropertyGroup>
 
   <ItemGroup>
+    <PackageReference Include="Microsoft.DependencyValidation.Analyzers" Version="0.11.0" />
     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
     <PackageReference Include="xunit" Version="2.4.2" />
     <PackageReference Include="xunit.runner.visualstudio" Version="2.4.5">
diff --git a/EFCore7Study.DataService/AppDbContext.cs b/EFCore7Study.DataService/AppDbContext.cs
new file mode 100644
index 0000000..3fb0003
--- /dev/null
+++ b/EFCore7Study.DataService/AppDbContext.cs
@@ -0,0 +1,51 @@
+using EFCore7Study.DataService.Models;
+
+using Microsoft.EntityFrameworkCore;
+
+namespace EFCore7Study.DataService
+{
+    public class AppDbContext : DbContext
+    {
+        private string? _connectString;
+
+        public AppDbContext()
+        {
+
+        }
+
+        public AppDbContext(string connectstring)
+        {
+            _connectString = connectstring;
+        }
+
+        public AppDbContext(DbContextOptions<AppDbContext> options)
+            : base(options)
+        {
+
+        }
+
+        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
+        {
+            if (!optionsBuilder.IsConfigured)
+            {
+                if (string.IsNullOrWhiteSpace(_connectString))
+                {
+                    _connectString = @"Server=127.0.0.1\SQL2019;Database=EFCore7Study;User Id=sa;Password=gly-bicijinlian;Encrypt=True;TrustServerCertificate=True;";
+                }
+
+                optionsBuilder
+                    .UseSqlServer(_connectString)
+                    .EnableSensitiveDataLogging();
+            }
+        }
+
+        protected override void OnModelCreating(ModelBuilder modelBuilder)
+        {
+            modelBuilder.Entity<Account>().ToTable("Account");
+
+            base.OnModelCreating(modelBuilder);
+        }
+
+        public DbSet<Account> Accounts { get; set; }
+    }
+}
\ No newline at end of file
diff --git a/EFCore7Study.DataService/Class1.cs b/EFCore7Study.DataService/Class1.cs
deleted file mode 100644
index b4b991e..0000000
--- a/EFCore7Study.DataService/Class1.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace EFCore7Study.DataService
-{
-    public class Class1
-    {
-
-    }
-}
\ No newline at end of file
diff --git a/EFCore7Study.DataService/EFCore7Study.DataService.csproj b/EFCore7Study.DataService/EFCore7Study.DataService.csproj
index bebe973..d462168 100644
--- a/EFCore7Study.DataService/EFCore7Study.DataService.csproj
+++ b/EFCore7Study.DataService/EFCore7Study.DataService.csproj
@@ -7,6 +7,8 @@
   </PropertyGroup>
 
   <ItemGroup>
+    <PackageReference Include="Microsoft.DependencyValidation.Analyzers" Version="0.11.0" />
+    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.5" />
     <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.5" />
   </ItemGroup>
 
diff --git a/EFCore7Study.DataService/Models/Account.cs b/EFCore7Study.DataService/Models/Account.cs
new file mode 100644
index 0000000..b8bc6a3
--- /dev/null
+++ b/EFCore7Study.DataService/Models/Account.cs
@@ -0,0 +1,17 @@
+namespace EFCore7Study.DataService.Models
+{
+    /// <summary>
+    /// 帐号信息
+    /// </summary>
+    public class Account
+    {
+        public int Id { get; set; }
+        public string Code { get; set; }
+        public string Name { get; set; }
+        public string Pwd { get; set; }
+
+        public int Age { get; set; }
+
+        public int State { get; set; }
+    }
+}
diff --git a/EFCore7Study.WebApi/EFCore7Study.WebApi.csproj b/EFCore7Study.WebApi/EFCore7Study.WebApi.csproj
index 499d259..d6f9db3 100644
--- a/EFCore7Study.WebApi/EFCore7Study.WebApi.csproj
+++ b/EFCore7Study.WebApi/EFCore7Study.WebApi.csproj
@@ -8,6 +8,7 @@
 
   <ItemGroup>
     <PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="7.0.5" />
+    <PackageReference Include="Microsoft.DependencyValidation.Analyzers" Version="0.11.0" />
     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
   </ItemGroup>
 
diff --git a/EFCore7Study.WebApp/EFCore7Study.WebApp.csproj b/EFCore7Study.WebApp/EFCore7Study.WebApp.csproj
index 4c2bb77..b4f160e 100644
--- a/EFCore7Study.WebApp/EFCore7Study.WebApp.csproj
+++ b/EFCore7Study.WebApp/EFCore7Study.WebApp.csproj
@@ -6,4 +6,8 @@
     <ImplicitUsings>enable</ImplicitUsings>
   </PropertyGroup>
 
+  <ItemGroup>
+    <PackageReference Include="Microsoft.DependencyValidation.Analyzers" Version="0.11.0" />
+  </ItemGroup>
+
 </Project>