diff --git a/aspnet-core/templates/PackageName.CompanyName.ProjectName.csproj b/aspnet-core/templates/PackageName.CompanyName.ProjectName.csproj
new file mode 100644
index 000000000..2b3a05941
--- /dev/null
+++ b/aspnet-core/templates/PackageName.CompanyName.ProjectName.csproj
@@ -0,0 +1,30 @@
+
+
+ net8.0
+ true
+ LINGYUN.Abp.MicroService.Templates
+ 8.1.1
+ colin.in@foxmail.com
+ Abp framework micro-service template
+ MIT
+ false
+ https://github.com/colinin/abp-next-admin
+ micro webapi cloud
+ Template
+ git
+ https://github.com/colinin/abp-next-admin
+ true
+ true
+ true
+ true
+ False
+ False
+
+
+
+
+ true
+ content
+
+
+
\ No newline at end of file
diff --git a/aspnet-core/templates/content/.template.config/template.json b/aspnet-core/templates/content/.template.config/template.json
index eb4dd8be8..132f70183 100644
--- a/aspnet-core/templates/content/.template.config/template.json
+++ b/aspnet-core/templates/content/.template.config/template.json
@@ -11,6 +11,15 @@
"language": "C#",
"type": "project"
},
+ "sources": [
+ {
+ "modifiers": [
+ {
+ "exclude": [ "**/[Bb]in/**", "**/[Oo]bj/**", "**/[Ll]ocalNuget/**" , ".template.config/**/*", ".vs/**/*"]
+ }
+ ]
+ }
+ ],
"sourceName": "ProjectName",
"preferNameDirectory": true,
"symbols": {
diff --git a/aspnet-core/templates/content/Directory.Build.props b/aspnet-core/templates/content/Directory.Build.props
index 80fddb3fd..a9ca45ada 100644
--- a/aspnet-core/templates/content/Directory.Build.props
+++ b/aspnet-core/templates/content/Directory.Build.props
@@ -1,48 +1,13 @@
-
+
- 8.0.3
- 3.0.0
- 8.0.3
- 1.12.0
- 1.0.2
- 8.0.0
- 2.11.0
- 1.5.10
- 2.13.0
- 3.0.712
- 1.6.9
- 2.0.3
- 1.8.6
- 7.15.1
- 13.0.1
- 1.0.0-rc8
- 1.3.1
- 1.0.0-rc8
- 1.0.0-rc8
- 1.0.0-beta2
- 3.7.0
- 2.7.4
- 3.1.1
- 8.0.0
- 2.3.0
- 2.0.0
- 2.0.2
- 3.1.0
- 8.0.0
- 8.0.0
- 5.0.0
- 9.0.3
- 5.0.0
- 2.0.1
- 6.5.0
- 8.2.0
- 8.0.*
- 8.0.0
- 2.6.1
- 2.5.5
- 4.2.1
- 5.1.0
- 17.8.0
- 3.0.2
-
-
\ No newline at end of file
+ true
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers
+
+
+
+
diff --git a/aspnet-core/templates/content/Directory.Packages.props b/aspnet-core/templates/content/Directory.Packages.props
new file mode 100644
index 000000000..f275d61b8
--- /dev/null
+++ b/aspnet-core/templates/content/Directory.Packages.props
@@ -0,0 +1,293 @@
+
+
+ 8.1.1
+ 2.14.1
+ 8.1.1
+ 8.1.1
+ 8.0.0
+ 8.0.0
+ 8.0.0
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/aspnet-core/templates/content/NuGet.Config b/aspnet-core/templates/content/NuGet.Config
new file mode 100644
index 000000000..8ed44e75a
--- /dev/null
+++ b/aspnet-core/templates/content/NuGet.Config
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/aspnet-core/templates/content/PackageName.CompanyName.ProjectName.sln b/aspnet-core/templates/content/PackageName.CompanyName.ProjectName.sln
index baccd1688..f66e0df1f 100644
--- a/aspnet-core/templates/content/PackageName.CompanyName.ProjectName.sln
+++ b/aspnet-core/templates/content/PackageName.CompanyName.ProjectName.sln
@@ -5,32 +5,15 @@ VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{4B0AD527-99B3-49A9-8A45-FD8671F8BE4D}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.Domain.Shared", "src\PackageName.CompanyName.ProjectName.Domain.Shared\PackageName.CompanyName.ProjectName.Domain.Shared.csproj", "{FF067843-45C5-4C5E-89E2-EA6DFCCBE1B7}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.Domain", "src\PackageName.CompanyName.ProjectName.Domain\PackageName.CompanyName.ProjectName.Domain.csproj", "{9C2828F2-1377-4597-B2B5-A34F1A012D54}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.Application.Contracts", "src\PackageName.CompanyName.ProjectName.Application.Contracts\PackageName.CompanyName.ProjectName.Application.Contracts.csproj", "{4A43EC9C-0CF2-484C-A228-E546C8D6A2A7}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.Application", "src\PackageName.CompanyName.ProjectName.Application\PackageName.CompanyName.ProjectName.Application.csproj", "{92140C62-7366-4EBB-986C-97148A529689}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.EntityFrameworkCore", "src\PackageName.CompanyName.ProjectName.EntityFrameworkCore\PackageName.CompanyName.ProjectName.EntityFrameworkCore.csproj", "{164A4539-C9D1-4F2D-9892-9AFA4A124DEE}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.Dapr.Client", "src\PackageName.CompanyName.ProjectName.Dapr.Client\PackageName.CompanyName.ProjectName.Dapr.Client.csproj", "{613503F5-87BE-4D56-8C3E-6CBD30C121ED}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.HttpApi", "src\PackageName.CompanyName.ProjectName.HttpApi\PackageName.CompanyName.ProjectName.HttpApi.csproj", "{DF766347-1C80-4025-8E45-3CDFC95C7CCA}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.HttpApi.Host", "host\PackageName.CompanyName.ProjectName.HttpApi.Host\PackageName.CompanyName.ProjectName.HttpApi.Host.csproj", "{31E33CE2-71D3-43FF-9A30-2DCC82C607AE}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.HttpApi.Client", "src\PackageName.CompanyName.ProjectName.HttpApi.Client\PackageName.CompanyName.ProjectName.HttpApi.Client.csproj", "{6365D1AE-5877-41CD-BF64-F1A3CEDDCEFB}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.SettingManagement", "src\PackageName.CompanyName.ProjectName.SettingManagement\PackageName.CompanyName.ProjectName.SettingManagement.csproj", "{42C88D57-66A1-4B02-AFEA-17421C5EEC97}"
-EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".Solution Items", ".Solution Items", "{C9675742-7986-4BC1-9781-FD1C3C5B6287}"
ProjectSection(SolutionItems) = preProject
common.props = common.props
configureawait.props = configureawait.props
Directory.Build.props = Directory.Build.props
- ..\..\NuGet.Config = ..\..\NuGet.Config
+ Directory.Packages.props = Directory.Packages.props
+ NuGet.Config = NuGet.Config
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "host", "host", "{4786387C-C1C5-46F8-806F-EBC54DB0A4FA}"
@@ -49,52 +32,34 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.Pro
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "migrations", "migrations", "{2BF87FAA-69E7-486E-9123-1F407A2BB633}"
EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.Domain.Shared", "src\PackageName.CompanyName.ProjectName.Domain.Shared\PackageName.CompanyName.ProjectName.Domain.Shared.csproj", "{77090F97-BD80-4469-842F-F5769CF849E9}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.Domain", "src\PackageName.CompanyName.ProjectName.Domain\PackageName.CompanyName.ProjectName.Domain.csproj", "{DF2CCF03-95D5-4BE4-8B32-742818C56F15}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.Application.Contracts", "src\PackageName.CompanyName.ProjectName.Application.Contracts\PackageName.CompanyName.ProjectName.Application.Contracts.csproj", "{54FB9929-7D9C-40FC-A0D0-94ACBA37D20E}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.Application", "src\PackageName.CompanyName.ProjectName.Application\PackageName.CompanyName.ProjectName.Application.csproj", "{F2A6182F-BCB9-4C80-947C-0A2ED1B6BFDB}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.Dapr.Client", "src\PackageName.CompanyName.ProjectName.Dapr.Client\PackageName.CompanyName.ProjectName.Dapr.Client.csproj", "{B69F04FF-8505-49F6-9B60-BB800846C87C}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.EntityFrameworkCore", "src\PackageName.CompanyName.ProjectName.EntityFrameworkCore\PackageName.CompanyName.ProjectName.EntityFrameworkCore.csproj", "{09CA7186-DBA7-4428-A1ED-31292AC02050}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.HttpApi", "src\PackageName.CompanyName.ProjectName.HttpApi\PackageName.CompanyName.ProjectName.HttpApi.csproj", "{FDB3A3E9-C072-438D-8B8D-2AA957C1167F}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.HttpApi.Client", "src\PackageName.CompanyName.ProjectName.HttpApi.Client\PackageName.CompanyName.ProjectName.HttpApi.Client.csproj", "{8CE7C515-CD78-42D4-A9D7-39D217A3D046}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.SettingManagement", "src\PackageName.CompanyName.ProjectName.SettingManagement\PackageName.CompanyName.ProjectName.SettingManagement.csproj", "{CAEB3435-A332-4FFA-BE5F-4E386FA8B19B}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {FF067843-45C5-4C5E-89E2-EA6DFCCBE1B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {FF067843-45C5-4C5E-89E2-EA6DFCCBE1B7}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {FF067843-45C5-4C5E-89E2-EA6DFCCBE1B7}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {FF067843-45C5-4C5E-89E2-EA6DFCCBE1B7}.Release|Any CPU.Build.0 = Release|Any CPU
- {9C2828F2-1377-4597-B2B5-A34F1A012D54}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {9C2828F2-1377-4597-B2B5-A34F1A012D54}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {9C2828F2-1377-4597-B2B5-A34F1A012D54}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {9C2828F2-1377-4597-B2B5-A34F1A012D54}.Release|Any CPU.Build.0 = Release|Any CPU
- {4A43EC9C-0CF2-484C-A228-E546C8D6A2A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {4A43EC9C-0CF2-484C-A228-E546C8D6A2A7}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {4A43EC9C-0CF2-484C-A228-E546C8D6A2A7}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {4A43EC9C-0CF2-484C-A228-E546C8D6A2A7}.Release|Any CPU.Build.0 = Release|Any CPU
- {92140C62-7366-4EBB-986C-97148A529689}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {92140C62-7366-4EBB-986C-97148A529689}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {92140C62-7366-4EBB-986C-97148A529689}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {92140C62-7366-4EBB-986C-97148A529689}.Release|Any CPU.Build.0 = Release|Any CPU
- {164A4539-C9D1-4F2D-9892-9AFA4A124DEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {164A4539-C9D1-4F2D-9892-9AFA4A124DEE}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {164A4539-C9D1-4F2D-9892-9AFA4A124DEE}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {164A4539-C9D1-4F2D-9892-9AFA4A124DEE}.Release|Any CPU.Build.0 = Release|Any CPU
- {613503F5-87BE-4D56-8C3E-6CBD30C121ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {613503F5-87BE-4D56-8C3E-6CBD30C121ED}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {613503F5-87BE-4D56-8C3E-6CBD30C121ED}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {613503F5-87BE-4D56-8C3E-6CBD30C121ED}.Release|Any CPU.Build.0 = Release|Any CPU
- {DF766347-1C80-4025-8E45-3CDFC95C7CCA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {DF766347-1C80-4025-8E45-3CDFC95C7CCA}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {DF766347-1C80-4025-8E45-3CDFC95C7CCA}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {DF766347-1C80-4025-8E45-3CDFC95C7CCA}.Release|Any CPU.Build.0 = Release|Any CPU
{31E33CE2-71D3-43FF-9A30-2DCC82C607AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{31E33CE2-71D3-43FF-9A30-2DCC82C607AE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{31E33CE2-71D3-43FF-9A30-2DCC82C607AE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{31E33CE2-71D3-43FF-9A30-2DCC82C607AE}.Release|Any CPU.Build.0 = Release|Any CPU
- {6365D1AE-5877-41CD-BF64-F1A3CEDDCEFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {6365D1AE-5877-41CD-BF64-F1A3CEDDCEFB}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {6365D1AE-5877-41CD-BF64-F1A3CEDDCEFB}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {6365D1AE-5877-41CD-BF64-F1A3CEDDCEFB}.Release|Any CPU.Build.0 = Release|Any CPU
- {42C88D57-66A1-4B02-AFEA-17421C5EEC97}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {42C88D57-66A1-4B02-AFEA-17421C5EEC97}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {42C88D57-66A1-4B02-AFEA-17421C5EEC97}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {42C88D57-66A1-4B02-AFEA-17421C5EEC97}.Release|Any CPU.Build.0 = Release|Any CPU
{9262FE7A-76B2-424F-8C34-AFA1D95D7E5A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9262FE7A-76B2-424F-8C34-AFA1D95D7E5A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9262FE7A-76B2-424F-8C34-AFA1D95D7E5A}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -115,26 +80,62 @@ Global
{F6EE5BCD-69C7-4C8A-8B45-251AFE2BB01E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F6EE5BCD-69C7-4C8A-8B45-251AFE2BB01E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F6EE5BCD-69C7-4C8A-8B45-251AFE2BB01E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {77090F97-BD80-4469-842F-F5769CF849E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {77090F97-BD80-4469-842F-F5769CF849E9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {77090F97-BD80-4469-842F-F5769CF849E9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {77090F97-BD80-4469-842F-F5769CF849E9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DF2CCF03-95D5-4BE4-8B32-742818C56F15}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DF2CCF03-95D5-4BE4-8B32-742818C56F15}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DF2CCF03-95D5-4BE4-8B32-742818C56F15}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DF2CCF03-95D5-4BE4-8B32-742818C56F15}.Release|Any CPU.Build.0 = Release|Any CPU
+ {54FB9929-7D9C-40FC-A0D0-94ACBA37D20E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {54FB9929-7D9C-40FC-A0D0-94ACBA37D20E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {54FB9929-7D9C-40FC-A0D0-94ACBA37D20E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {54FB9929-7D9C-40FC-A0D0-94ACBA37D20E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F2A6182F-BCB9-4C80-947C-0A2ED1B6BFDB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F2A6182F-BCB9-4C80-947C-0A2ED1B6BFDB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F2A6182F-BCB9-4C80-947C-0A2ED1B6BFDB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F2A6182F-BCB9-4C80-947C-0A2ED1B6BFDB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B69F04FF-8505-49F6-9B60-BB800846C87C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B69F04FF-8505-49F6-9B60-BB800846C87C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B69F04FF-8505-49F6-9B60-BB800846C87C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B69F04FF-8505-49F6-9B60-BB800846C87C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {09CA7186-DBA7-4428-A1ED-31292AC02050}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {09CA7186-DBA7-4428-A1ED-31292AC02050}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {09CA7186-DBA7-4428-A1ED-31292AC02050}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {09CA7186-DBA7-4428-A1ED-31292AC02050}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FDB3A3E9-C072-438D-8B8D-2AA957C1167F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FDB3A3E9-C072-438D-8B8D-2AA957C1167F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FDB3A3E9-C072-438D-8B8D-2AA957C1167F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FDB3A3E9-C072-438D-8B8D-2AA957C1167F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8CE7C515-CD78-42D4-A9D7-39D217A3D046}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8CE7C515-CD78-42D4-A9D7-39D217A3D046}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8CE7C515-CD78-42D4-A9D7-39D217A3D046}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8CE7C515-CD78-42D4-A9D7-39D217A3D046}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CAEB3435-A332-4FFA-BE5F-4E386FA8B19B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CAEB3435-A332-4FFA-BE5F-4E386FA8B19B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CAEB3435-A332-4FFA-BE5F-4E386FA8B19B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CAEB3435-A332-4FFA-BE5F-4E386FA8B19B}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
- {FF067843-45C5-4C5E-89E2-EA6DFCCBE1B7} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D}
- {9C2828F2-1377-4597-B2B5-A34F1A012D54} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D}
- {4A43EC9C-0CF2-484C-A228-E546C8D6A2A7} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D}
- {92140C62-7366-4EBB-986C-97148A529689} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D}
- {164A4539-C9D1-4F2D-9892-9AFA4A124DEE} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D}
- {613503F5-87BE-4D56-8C3E-6CBD30C121ED} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D}
- {DF766347-1C80-4025-8E45-3CDFC95C7CCA} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D}
{31E33CE2-71D3-43FF-9A30-2DCC82C607AE} = {4786387C-C1C5-46F8-806F-EBC54DB0A4FA}
- {6365D1AE-5877-41CD-BF64-F1A3CEDDCEFB} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D}
- {42C88D57-66A1-4B02-AFEA-17421C5EEC97} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D}
{9262FE7A-76B2-424F-8C34-AFA1D95D7E5A} = {A9CB1547-1C2C-4A23-82EC-C834C1626E0A}
{A0D1F8A4-3494-4E26-9E2D-DB874B93DBCE} = {A9CB1547-1C2C-4A23-82EC-C834C1626E0A}
{0B2E1C9E-092D-4E5F-BE9F-5506E689FC85} = {A9CB1547-1C2C-4A23-82EC-C834C1626E0A}
{4A9D43A2-D08B-40E8-9C74-F2B95BF81AED} = {A9CB1547-1C2C-4A23-82EC-C834C1626E0A}
{F6EE5BCD-69C7-4C8A-8B45-251AFE2BB01E} = {2BF87FAA-69E7-486E-9123-1F407A2BB633}
+ {77090F97-BD80-4469-842F-F5769CF849E9} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D}
+ {DF2CCF03-95D5-4BE4-8B32-742818C56F15} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D}
+ {54FB9929-7D9C-40FC-A0D0-94ACBA37D20E} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D}
+ {F2A6182F-BCB9-4C80-947C-0A2ED1B6BFDB} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D}
+ {B69F04FF-8505-49F6-9B60-BB800846C87C} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D}
+ {09CA7186-DBA7-4428-A1ED-31292AC02050} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D}
+ {FDB3A3E9-C072-438D-8B8D-2AA957C1167F} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D}
+ {8CE7C515-CD78-42D4-A9D7-39D217A3D046} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D}
+ {CAEB3435-A332-4FFA-BE5F-4E386FA8B19B} = {4B0AD527-99B3-49A9-8A45-FD8671F8BE4D}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {62C0F185-E2C2-46A2-B4B2-5E703E25849E}
diff --git a/aspnet-core/templates/content/common.props b/aspnet-core/templates/content/common.props
index dd612d1c6..65492c743 100644
--- a/aspnet-core/templates/content/common.props
+++ b/aspnet-core/templates/content/common.props
@@ -1,23 +1,22 @@
-
- latest
- 8.0.3
- colin
- $(NoWarn);CS1591;CS0436;CS8618;NU1803
- https://github.com/colinin/abp-next-admin
- MIT
- git
- https://github.com/colinin/abp-next-admin
- true
- true
- false
- content
-
+
+ latest
+ 8.1.1
+ colin
+ $(NoWarn);CS1591;CS0436;CS8618;NU1803
+ https://github.com/colinin/abp-next-admin
+ $(SolutionDir)LocalNuget
+ 8.1.1
+ MIT
+ git
+ https://github.com/colinin/abp-next-admin
+ true
+
-
-
-
-
+
+
+
+
@@ -26,19 +25,19 @@
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
- $(SolutionDir)LocalNuget
-
+
+ $(SolutionDir)LocalNuget
+
\ No newline at end of file
diff --git a/aspnet-core/templates/content/configureawait.props b/aspnet-core/templates/content/configureawait.props
index 2e04405b2..3caa88c04 100644
--- a/aspnet-core/templates/content/configureawait.props
+++ b/aspnet-core/templates/content/configureawait.props
@@ -1,7 +1,7 @@
-
-
+
+
All
runtime; build; native; contentfiles; analyzers
diff --git a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.DbMigrator/DbMigratorHostedService.cs b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.DbMigrator/DbMigratorHostedService.cs
index b61e0dc04..122c8201f 100644
--- a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.DbMigrator/DbMigratorHostedService.cs
+++ b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.DbMigrator/DbMigratorHostedService.cs
@@ -34,7 +34,7 @@ public class DbMigratorHostedService : IHostedService
await application
.ServiceProvider
.GetRequiredService()
- .MigrateAsync();
+ .CheckAndApplyDatabaseMigrationsAsync();
await application.ShutdownAsync();
diff --git a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.DbMigrator/PackageName.CompanyName.ProjectName.DbMigrator.csproj b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.DbMigrator/PackageName.CompanyName.ProjectName.DbMigrator.csproj
index 67783e37f..b125867ab 100644
--- a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.DbMigrator/PackageName.CompanyName.ProjectName.DbMigrator.csproj
+++ b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.DbMigrator/PackageName.CompanyName.ProjectName.DbMigrator.csproj
@@ -11,21 +11,21 @@
-
-
-
-
-
+
+
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/EventBus/Handlers/TenantSynchronizer.cs b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/EventBus/Handlers/TenantSynchronizer.cs
deleted file mode 100644
index 1c6f1aae7..000000000
--- a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/EventBus/Handlers/TenantSynchronizer.cs
+++ /dev/null
@@ -1,81 +0,0 @@
-using PackageName.CompanyName.ProjectName.EntityFrameworkCore;
-using LINGYUN.Abp.Data.DbMigrator;
-using LINGYUN.Abp.MultiTenancy;
-using Microsoft.EntityFrameworkCore;
-using Microsoft.Extensions.Logging;
-using System.Threading.Tasks;
-using Volo.Abp.Data;
-using Volo.Abp.DependencyInjection;
-using Volo.Abp.EventBus.Distributed;
-using Volo.Abp.MultiTenancy;
-using Volo.Abp.Uow;
-
-namespace PackageName.CompanyName.ProjectName.EventBus.Handlers;
-
-public class TenantSynchronizer :
- IDistributedEventHandler,
- ITransientDependency
-{
- protected IDataSeeder DataSeeder { get; }
- protected ICurrentTenant CurrentTenant { get; }
- protected IDbSchemaMigrator DbSchemaMigrator { get; }
- protected IUnitOfWorkManager UnitOfWorkManager { get; }
-
- protected ILogger Logger { get; }
-
- public TenantSynchronizer(
- IDataSeeder dataSeeder,
- ICurrentTenant currentTenant,
- IDbSchemaMigrator dbSchemaMigrator,
- IUnitOfWorkManager unitOfWorkManager,
- ILogger logger)
- {
- DataSeeder = dataSeeder;
- CurrentTenant = currentTenant;
- DbSchemaMigrator = dbSchemaMigrator;
- UnitOfWorkManager = unitOfWorkManager;
-
- Logger = logger;
- }
-
- ///
- /// 租户创建之后需要预置种子数据
- ///
- ///
- ///
- public virtual async Task HandleEventAsync(CreateEventData eventData)
- {
- using (var unitOfWork = UnitOfWorkManager.Begin())
- {
- using (CurrentTenant.Change(eventData.Id, eventData.Name))
- {
- Logger.LogInformation("Migrating the new tenant database with PackageName.CompanyName.ProjectName...");
- // 迁移租户数据
- await DbSchemaMigrator.MigrateAsync(
- (connectionString, builder) =>
- {
-#if MySQL
- builder.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString));
-#elif SqlServer
- builder.UseSqlServer(connectionString);
-#elif Sqlite
- builder.UseSqlite(connectionString);
-#elif Oracle
- builder.UseOracle(connectionString);
-#elif OracleDevart
- builder.UseOracle(connectionString);
-#elif PostgreSql
- builder.UseNpgsql(connectionString);
-#endif
-
- return new ProjectNameDbContext(builder.Options);
- });
- Logger.LogInformation("Migrated the new tenant database with PackageName.CompanyName.ProjectName...");
-
- await DataSeeder.SeedAsync(new DataSeedContext(eventData.Id));
-
- await unitOfWork.SaveChangesAsync();
- }
- }
- }
-}
diff --git a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/PackageName.CompanyName.ProjectName.HttpApi.Host.csproj b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/PackageName.CompanyName.ProjectName.HttpApi.Host.csproj
index 6c5211795..e713008be 100644
--- a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/PackageName.CompanyName.ProjectName.HttpApi.Host.csproj
+++ b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/PackageName.CompanyName.ProjectName.HttpApi.Host.csproj
@@ -6,61 +6,61 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.Configure.cs b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.Configure.cs
index 0094a93ca..317132028 100644
--- a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.Configure.cs
+++ b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.Configure.cs
@@ -17,6 +17,7 @@ using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Microsoft.OpenApi.Models;
+using OpenTelemetry.Metrics;
using OpenTelemetry.Resources;
using OpenTelemetry.Trace;
using PackageName.CompanyName.ProjectName.Localization;
@@ -139,24 +140,31 @@ public partial class ProjectNameHttpApiHostModule
var openTelemetryEnabled = configuration["OpenTelemetry:IsEnabled"];
if (openTelemetryEnabled.IsNullOrEmpty() || bool.Parse(openTelemetryEnabled))
{
- services.AddOpenTelemetryTracing(cfg =>
- {
- cfg.AddSource(ApplicationName)
- .SetResourceBuilder(
- ResourceBuilder.CreateDefault().AddService(ApplicationName))
- .AddHttpClientInstrumentation()
- .AddAspNetCoreInstrumentation()
- //.AddEntityFrameworkCoreInstrumentation()
- .AddCapInstrumentation()
- .AddZipkinExporter(zipKinOptions =>
- {
- var endpoint = configuration["OpenTelemetry:ZipKin:Endpoint"];
- if (!endpoint.IsNullOrWhiteSpace())
- {
- zipKinOptions.Endpoint = new Uri(configuration["OpenTelemetry:ZipKin:Endpoint"]);
- }
- });
- });
+ services.AddOpenTelemetry()
+ .ConfigureResource(builder =>
+ {
+ builder.AddService(ApplicationName);
+ })
+ .WithTracing(builder =>
+ {
+ builder.AddHttpClientInstrumentation();
+ builder.AddAspNetCoreInstrumentation();
+ builder.AddCapInstrumentation();
+ builder.AddEntityFrameworkCoreInstrumentation();
+ builder.AddZipkinExporter(zipKinOptions =>
+ {
+ var endpoint = configuration["OpenTelemetry:ZipKin:Endpoint"];
+ if (!endpoint.IsNullOrWhiteSpace())
+ {
+ zipKinOptions.Endpoint = new Uri(configuration["OpenTelemetry:ZipKin:Endpoint"]);
+ }
+ });
+ })
+ .WithMetrics(builder =>
+ {
+ builder.AddHttpClientInstrumentation();
+ builder.AddAspNetCoreInstrumentation();
+ });
}
}
@@ -312,6 +320,7 @@ public partial class ProjectNameHttpApiHostModule
options.Authority = configuration["AuthServer:Authority"];
options.Audience = configuration["AuthServer:ApiName"];
options.RequireHttpsMetadata = Convert.ToBoolean(configuration["AuthServer:RequireHttpsMetadata"]);
+ options.MapInboundClaims = Convert.ToBoolean(configuration["AuthServer:MapInboundClaims"]);
});
if (!isDevelopment)
diff --git a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.cs b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.cs
index 0abe6ab24..384fe9b92 100644
--- a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.cs
+++ b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.cs
@@ -109,6 +109,7 @@ public partial class ProjectNameHttpApiHostModule : AbpModule
#elif OpenIddict
app.UseAbpOpenIddictValidation();
#endif
+ app.UseDynamicClaims();
app.UseMultiTenancy();
app.UseAuthorization();
app.UseSwagger();
diff --git a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/appsettings.Development.json b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/appsettings.Development.json
index c6e784dad..f7c712b7c 100644
--- a/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/appsettings.Development.json
+++ b/aspnet-core/templates/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/appsettings.Development.json
@@ -46,6 +46,7 @@
"InternalServiceClient": {
"Authority": "http://127.0.0.1:44385",
"RequireHttps": false,
+ "MapInboundClaims": false,
"GrantType": "client_credentials",
"Scope": "lingyun-abp-application",
"ClientId": "InternalServiceClient",
diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Application.Contracts/PackageName.CompanyName.ProjectName.Application.Contracts.csproj b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Application.Contracts/PackageName.CompanyName.ProjectName.Application.Contracts.csproj
index 4eb9907a3..5ea7939b9 100644
--- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Application.Contracts/PackageName.CompanyName.ProjectName.Application.Contracts.csproj
+++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Application.Contracts/PackageName.CompanyName.ProjectName.Application.Contracts.csproj
@@ -9,10 +9,10 @@
-
-
-
-
+
+
+
+
diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Application/PackageName.CompanyName.ProjectName.Application.csproj b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Application/PackageName.CompanyName.ProjectName.Application.csproj
index c301dd4fb..f7648550c 100644
--- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Application/PackageName.CompanyName.ProjectName.Application.csproj
+++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Application/PackageName.CompanyName.ProjectName.Application.csproj
@@ -9,8 +9,8 @@
-
-
+
+
diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Application/System/Linq/Expressions/ExpressionFuncExtensions.cs b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Application/System/Linq/Expressions/ExpressionFuncExtensions.cs
new file mode 100644
index 000000000..fd7a017ea
--- /dev/null
+++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Application/System/Linq/Expressions/ExpressionFuncExtensions.cs
@@ -0,0 +1,32 @@
+using Volo.Abp.Specifications;
+
+namespace System.Linq.Expressions;
+
+internal static class ExpressionFuncExtensions
+{
+ public static Expression> AndIf(
+ this Expression> first,
+ bool condition,
+ Expression> second)
+ {
+ if (condition)
+ {
+ return ExpressionFuncExtender.And(first, second);
+ }
+
+ return first;
+ }
+
+ public static Expression> OrIf(
+ this Expression> first,
+ bool condition,
+ Expression> second)
+ {
+ if (condition)
+ {
+ return ExpressionFuncExtender.Or(first, second);
+ }
+
+ return first;
+ }
+}
diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Dapr.Client/PackageName.CompanyName.ProjectName.Dapr.Client.csproj b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Dapr.Client/PackageName.CompanyName.ProjectName.Dapr.Client.csproj
index d5a4e69ac..4372fdff4 100644
--- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Dapr.Client/PackageName.CompanyName.ProjectName.Dapr.Client.csproj
+++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Dapr.Client/PackageName.CompanyName.ProjectName.Dapr.Client.csproj
@@ -9,7 +9,7 @@
-
+
diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain.Shared/PackageName.CompanyName.ProjectName.Domain.Shared.csproj b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain.Shared/PackageName.CompanyName.ProjectName.Domain.Shared.csproj
index e10b1cfdd..39a5ff943 100644
--- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain.Shared/PackageName.CompanyName.ProjectName.Domain.Shared.csproj
+++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain.Shared/PackageName.CompanyName.ProjectName.Domain.Shared.csproj
@@ -17,9 +17,9 @@
-
-
-
+
+
+
diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName.CompanyName.ProjectName.Domain.csproj b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName.CompanyName.ProjectName.Domain.csproj
index 2b70ff5aa..aa9fe6a4a 100644
--- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName.CompanyName.ProjectName.Domain.csproj
+++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName.CompanyName.ProjectName.Domain.csproj
@@ -9,9 +9,10 @@
-
-
-
+
+
+
+
diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/IProjectNameSpecificationSupport.cs b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/IProjectNameBasicRepository.cs
similarity index 90%
rename from aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/IProjectNameSpecificationSupport.cs
rename to aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/IProjectNameBasicRepository.cs
index e86bc9de9..290e09398 100644
--- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/IProjectNameSpecificationSupport.cs
+++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/IProjectNameBasicRepository.cs
@@ -1,53 +1,54 @@
-using System.Collections.Generic;
-using System.Threading;
-using System.Threading.Tasks;
-using Volo.Abp.Domain.Entities;
-using Volo.Abp.Specifications;
-
-namespace PackageName.CompanyName.ProjectName;
-///
-/// 实现接口支持规约化查询
-///
-/// 实体类型
-/// 实体主键类型
-public interface IProjectNameSpecificationSupport
- where TEntity : class, IEntity
-{
- ///
- /// 获取过滤后的实体数量
- ///
- ///
- ///
- ///
- Task GetCountAsync(
- ISpecification specification,
- CancellationToken cancellationToken = default);
- ///
- /// 获取过滤后的实体列表(分页)
- ///
- ///
- ///
- ///
- ///
- ///
- ///
- Task> GetListAsync(
- ISpecification specification,
- string sorting = nameof(IEntity.Id),
- int maxResultCount = 10,
- int skipCount = 0,
- CancellationToken cancellationToken = default);
- ///
- /// 获取过滤后的实体列表
- ///
- ///
- ///
- ///
- ///
- ///
- Task> GetListAsync(
- ISpecification specification,
- string sorting = nameof(IEntity.Id),
- int maxResultCount = 10,
- CancellationToken cancellationToken = default);
-}
+using LINGYUN.Abp.DataProtection;
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+using Volo.Abp.Domain.Entities;
+using Volo.Abp.Specifications;
+
+namespace PackageName.CompanyName.ProjectName;
+///
+/// 基本仓储接口
+///
+/// 实体类型
+/// 实体主键类型
+public interface IProjectNameBasicRepository : IDataProtectionRepository
+ where TEntity : class, IEntity
+{
+ ///
+ /// 获取过滤后的实体数量
+ ///
+ ///
+ ///
+ ///
+ Task GetCountAsync(
+ ISpecification specification,
+ CancellationToken cancellationToken = default);
+ ///
+ /// 获取过滤后的实体列表(分页)
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ Task> GetListAsync(
+ ISpecification specification,
+ string sorting = nameof(IEntity.Id),
+ int maxResultCount = 10,
+ int skipCount = 0,
+ CancellationToken cancellationToken = default);
+ ///
+ /// 获取过滤后的实体列表
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ Task> GetListAsync(
+ ISpecification specification,
+ string sorting = nameof(IEntity.Id),
+ int maxResultCount = 10,
+ CancellationToken cancellationToken = default);
+}
diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/ProjectNameDomainModule.cs b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/ProjectNameDomainModule.cs
index 83927c1d2..715c1c3b2 100644
--- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/ProjectNameDomainModule.cs
+++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/ProjectNameDomainModule.cs
@@ -1,4 +1,5 @@
-using Microsoft.Extensions.DependencyInjection;
+using LINGYUN.Abp.DataProtection;
+using Microsoft.Extensions.DependencyInjection;
using PackageName.CompanyName.ProjectName.ObjectExtending;
using Volo.Abp.AutoMapper;
using Volo.Abp.Domain.Entities.Events.Distributed;
@@ -10,6 +11,7 @@ namespace PackageName.CompanyName.ProjectName;
[DependsOn(
typeof(AbpAutoMapperModule),
+ typeof(AbpDataProtectionModule),
typeof(ProjectNameDomainSharedModule))]
public class ProjectNameDomainModule : AbpModule
{
diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/Settings/ProjectNameSettingDefinitionProvider.cs b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/Settings/ProjectNameSettingDefinitionProvider.cs
index 64db558bf..3845b6ba7 100644
--- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/Settings/ProjectNameSettingDefinitionProvider.cs
+++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/Settings/ProjectNameSettingDefinitionProvider.cs
@@ -1,11 +1,10 @@
using Volo.Abp.Settings;
-namespace PackageName.CompanyName.ProjectName.Settings
+namespace PackageName.CompanyName.ProjectName.Settings;
+
+public class ProjectNameSettingDefinitionProvider : SettingDefinitionProvider
{
- public class ProjectNameSettingDefinitionProvider : SettingDefinitionProvider
+ public override void Define(ISettingDefinitionContext context)
{
- public override void Define(ISettingDefinitionContext context)
- {
- }
}
}
diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/Settings/ProjectNameSettings.cs b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/Settings/ProjectNameSettings.cs
index 7561cf8da..5d6afce6c 100644
--- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/Settings/ProjectNameSettings.cs
+++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/Settings/ProjectNameSettings.cs
@@ -1,7 +1,6 @@
-namespace PackageName.CompanyName.ProjectName.Settings
+namespace PackageName.CompanyName.ProjectName.Settings;
+
+public static class ProjectNameSettings
{
- public static class ProjectNameSettings
- {
- public const string GroupName = "ProjectName";
- }
+ public const string GroupName = "ProjectName";
}
diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName.CompanyName.ProjectName.EntityFrameworkCore.csproj b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName.CompanyName.ProjectName.EntityFrameworkCore.csproj
index 21a9721af..0ad982caf 100644
--- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName.CompanyName.ProjectName.EntityFrameworkCore.csproj
+++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName.CompanyName.ProjectName.EntityFrameworkCore.csproj
@@ -9,19 +9,20 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/EfCoreSpecificationSupportRepository.cs b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/EfCoreProjectNameRepository.cs
similarity index 78%
rename from aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/EfCoreSpecificationSupportRepository.cs
rename to aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/EfCoreProjectNameRepository.cs
index 0ba264327..2d68cf660 100644
--- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/EfCoreSpecificationSupportRepository.cs
+++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/EfCoreProjectNameRepository.cs
@@ -1,73 +1,77 @@
-using Microsoft.EntityFrameworkCore;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Linq.Dynamic.Core;
-using System.Threading;
-using System.Threading.Tasks;
-using Volo.Abp.Domain.Entities;
-using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
-using Volo.Abp.EntityFrameworkCore;
-using Volo.Abp.Specifications;
-
-namespace PackageName.CompanyName.ProjectName.EntityFrameworkCore;
-///
-/// 实现仓储提供规约化查询
-///
-/// 实体类型
-/// 实体主键类型
-public abstract class EfCoreSpecificationSupportRepository :
- EfCoreRepository,
- IProjectNameSpecificationSupport
- where TEntity : class, IEntity
-{
- protected EfCoreSpecificationSupportRepository(
- IDbContextProvider dbContextProvider) : base(dbContextProvider)
- {
- }
-
- public async virtual Task GetCountAsync(
- ISpecification specification,
- CancellationToken cancellationToken = default)
- {
- return await (await GetDbSetAsync())
- .Where(specification.ToExpression())
- .CountAsync(GetCancellationToken(cancellationToken));
- }
-
- public async virtual Task> GetListAsync(
- ISpecification specification,
- string sorting = nameof(IEntity.Id),
- int maxResultCount = 10,
- int skipCount = 0,
- CancellationToken cancellationToken = default)
- {
- return await (await GetDbSetAsync())
- .Where(specification.ToExpression())
- .OrderBy(GetSortingOrDefault(sorting))
- .PageBy(skipCount, maxResultCount)
- .ToListAsync(GetCancellationToken(cancellationToken));
- }
-
- public async virtual Task> GetListAsync(
- ISpecification specification,
- string sorting = nameof(IEntity.Id),
- int maxResultCount = 10,
- CancellationToken cancellationToken = default)
- {
- return await (await GetDbSetAsync())
- .Where(specification.ToExpression())
- .OrderBy(GetSortingOrDefault(sorting))
- .Take(maxResultCount)
- .ToListAsync(GetCancellationToken(cancellationToken));
- }
-
- protected virtual string GetSortingOrDefault(string sorting = nameof(IEntity.Id))
- {
- if (sorting.IsNullOrWhiteSpace())
- {
- return nameof(IEntity.Id);
- }
- return sorting;
- }
-}
+using LINGYUN.Abp.DataProtection;
+using LINGYUN.Abp.DataProtection.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Dynamic.Core;
+using System.Threading;
+using System.Threading.Tasks;
+using Volo.Abp.Domain.Entities;
+using Volo.Abp.EntityFrameworkCore;
+using Volo.Abp.Specifications;
+
+namespace PackageName.CompanyName.ProjectName.EntityFrameworkCore;
+///
+/// 实现基本接口
+///
+/// 实体类型
+/// 实体主键类型
+public abstract class EfCoreProjectNameRepository :
+ EfCoreDataProtectionRepository,
+ IProjectNameBasicRepository
+ where TEntity : class, IEntity
+{
+ protected EfCoreProjectNameRepository(
+ IDbContextProvider dbContextProvider,
+ IDataAuthorizationService dataAuthorizationService,
+ IEntityTypeFilterBuilder entityTypeFilterBuilder)
+ : base(dbContextProvider, dataAuthorizationService, entityTypeFilterBuilder)
+ {
+ }
+
+ public async virtual Task GetCountAsync(
+ ISpecification specification,
+ CancellationToken cancellationToken = default)
+ {
+ return await (await GetDbSetAsync())
+ .Where(specification.ToExpression())
+ .CountAsync(GetCancellationToken(cancellationToken));
+ }
+
+ public async virtual Task> GetListAsync(
+ ISpecification specification,
+ string sorting = nameof(IEntity.Id),
+ int maxResultCount = 10,
+ int skipCount = 0,
+ CancellationToken cancellationToken = default)
+ {
+ return await (await GetDbSetAsync())
+ .Where(specification.ToExpression())
+ .OrderBy(GetSortingOrDefault(sorting))
+ .PageBy(skipCount, maxResultCount)
+ .ToListAsync(GetCancellationToken(cancellationToken));
+ }
+
+ public async virtual Task> GetListAsync(
+ ISpecification specification,
+ string sorting = nameof(IEntity.Id),
+ int maxResultCount = 10,
+ CancellationToken cancellationToken = default)
+ {
+ return await (await GetDbSetAsync())
+ .Where(specification.ToExpression())
+ .OrderBy(GetSortingOrDefault(sorting))
+ .Take(maxResultCount)
+ .ToListAsync(GetCancellationToken(cancellationToken));
+ }
+
+ protected virtual string GetSortingOrDefault(string sorting = nameof(IEntity.Id))
+ {
+ if (sorting.IsNullOrWhiteSpace())
+ {
+ return nameof(IEntity.Id);
+ }
+ return sorting;
+ }
+}
diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameDbContext.cs b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameDbContext.cs
index 5e43ea730..3b7ad579f 100644
--- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameDbContext.cs
+++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameDbContext.cs
@@ -1,11 +1,11 @@
-using Microsoft.EntityFrameworkCore;
+using LINGYUN.Abp.DataProtection.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore;
using Volo.Abp.Data;
-using Volo.Abp.EntityFrameworkCore;
namespace PackageName.CompanyName.ProjectName.EntityFrameworkCore;
[ConnectionStringName(ProjectNameDbProperties.ConnectionStringName)]
-public class ProjectNameDbContext : AbpDbContext, IProjectNameDbContext
+public class ProjectNameDbContext : AbpDataProtectionDbContext, IProjectNameDbContext
{
public ProjectNameDbContext(
DbContextOptions options) : base(options)
diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameDbMigrationEventHandler.cs b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameDbMigrationEventHandler.cs
index fb335de37..51670b84d 100644
--- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameDbMigrationEventHandler.cs
+++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameDbMigrationEventHandler.cs
@@ -1,12 +1,34 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
+using Microsoft.Extensions.Logging;
+using System;
using System.Threading.Tasks;
+using Volo.Abp.Data;
using Volo.Abp.EntityFrameworkCore.Migrations;
+using Volo.Abp.EventBus.Distributed;
+using Volo.Abp.MultiTenancy;
+using Volo.Abp.Uow;
namespace PackageName.CompanyName.ProjectName.EntityFrameworkCore;
public class ProjectNameDbMigrationEventHandler : EfCoreDatabaseMigrationEventHandlerBase
{
+ protected IDataSeeder DataSeeder { get; }
+
+ public ProjectNameDbMigrationEventHandler(
+ IDataSeeder dataSeeder,
+ ITenantStore tenantStore,
+ ICurrentTenant currentTenant,
+ IUnitOfWorkManager unitOfWorkManager,
+ IDistributedEventBus distributedEventBus,
+ ILoggerFactory loggerFactory)
+ : base(
+ ConnectionStringNameAttribute.GetConnStringName(),
+ currentTenant, unitOfWorkManager, tenantStore, distributedEventBus, loggerFactory)
+ {
+ DataSeeder = dataSeeder;
+ }
+
+ protected async override Task SeedAsync(Guid? tenantId)
+ {
+ await DataSeeder.SeedAsync(tenantId);
+ }
}
diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameDbMigrationService.cs b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameDbMigrationService.cs
index ea4490372..a117242bb 100644
--- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameDbMigrationService.cs
+++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameDbMigrationService.cs
@@ -1,234 +1,59 @@
using LINGYUN.Abp.Data.DbMigrator;
using LINGYUN.Abp.Saas.Tenants;
-using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
-using Microsoft.Extensions.Logging.Abstractions;
using PackageName.CompanyName.ProjectName.EntityFrameworkCore;
using System;
-using System.Collections.Generic;
-using System.Diagnostics;
-using System.IO;
using System.Linq;
-using System.Runtime.InteropServices;
using System.Threading.Tasks;
using Volo.Abp.Data;
using Volo.Abp.DependencyInjection;
+using Volo.Abp.DistributedLocking;
+using Volo.Abp.EventBus.Distributed;
using Volo.Abp.MultiTenancy;
+using Volo.Abp.Uow;
namespace PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore;
-public class ProjectNameDbMigrationService : ITransientDependency
+public class ProjectNameDbMigrationService : EfCoreRuntimeDbMigratorBase, ITransientDependency
{
- public ILogger Logger { get; set; }
-
- private readonly IDataSeeder _dataSeeder;
- private readonly IDbSchemaMigrator _dbSchemaMigrator;
- private readonly ITenantRepository _tenantRepository;
- private readonly ICurrentTenant _currentTenant;
+ protected IDataSeeder DataSeeder { get; }
+ protected IDbSchemaMigrator DbSchemaMigrator { get; }
+ protected ITenantRepository TenantRepository { get; }
public ProjectNameDbMigrationService(
IDataSeeder dataSeeder,
IDbSchemaMigrator dbSchemaMigrator,
ITenantRepository tenantRepository,
- ICurrentTenant currentTenant)
- {
- _dataSeeder = dataSeeder;
- _dbSchemaMigrator = dbSchemaMigrator;
- _tenantRepository = tenantRepository;
- _currentTenant = currentTenant;
-
- Logger = NullLogger.Instance;
- }
-
- public async Task MigrateAsync()
- {
- var initialMigrationAdded = AddInitialMigrationIfNotExist();
-
- if (initialMigrationAdded)
- {
- return;
- }
-
- Logger.LogInformation("Started database migrations...");
-
- await MigrateDatabaseSchemaAsync();
- await SeedDataAsync();
-
- Logger.LogInformation($"Successfully completed host database migrations.");
-
- var tenants = await _tenantRepository.GetListAsync(includeDetails: true);
-
- var migratedDatabaseSchemas = new HashSet();
- foreach (var tenant in tenants)
- {
- using (_currentTenant.Change(tenant.Id))
- {
- if (tenant.ConnectionStrings.Any())
- {
- var tenantConnectionStrings = tenant.ConnectionStrings
- .Select(x => x.Value)
- .ToList();
-
- if (!migratedDatabaseSchemas.IsSupersetOf(tenantConnectionStrings))
- {
- await MigrateDatabaseSchemaAsync(tenant);
-
- migratedDatabaseSchemas.AddIfNotContains(tenantConnectionStrings);
- }
- }
-
- await SeedDataAsync(tenant);
- }
-
- Logger.LogInformation($"Successfully completed {tenant.Name} tenant database migrations.");
- }
-
- Logger.LogInformation("Successfully completed all database migrations.");
- Logger.LogInformation("You can safely end this process...");
- }
-
- private async Task MigrateDatabaseSchemaAsync(Tenant? tenant = null)
- {
- Logger.LogInformation($"Migrating schema for {(tenant == null ? "host" : tenant.Name + " tenant")} database...");
- // 迁移租户数据
- await _dbSchemaMigrator.MigrateAsync(
- (connectionString, builder) =>
- {
-#if MySQL
- builder.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString));
-#elif SqlServer
- builder.UseSqlServer(connectionString);
-#elif Sqlite
- builder.UseSqlite(connectionString);
-#elif Oracle
- builder.UseOracle(connectionString);
-#elif OracleDevart
- builder.UseOracle(connectionString);
-#elif PostgreSql
- builder.UseNpgsql(connectionString);
-#endif
-
- return new ProjectNameDbContext(builder.Options);
- });
- }
-
- private async Task SeedDataAsync(Tenant? tenant = null)
- {
- Logger.LogInformation($"Executing {(tenant == null ? "host" : tenant.Name + " tenant")} database seed...");
-
- await _dataSeeder.SeedAsync(tenant?.Id);
- }
-
- private bool AddInitialMigrationIfNotExist()
- {
- try
- {
- if (!DbMigrationsProjectExists())
- {
- return false;
- }
- }
- catch (Exception)
- {
- return false;
- }
-
- try
- {
- if (!MigrationsFolderExists())
- {
- AddInitialMigration();
- return true;
- }
- else
- {
- return false;
- }
- }
- catch (Exception e)
- {
- Logger.LogWarning("Couldn't determinate if any migrations exist : " + e.Message);
- return false;
- }
- }
-
- private bool DbMigrationsProjectExists()
+ ICurrentTenant currentTenant,
+ IUnitOfWorkManager unitOfWorkManager,
+ IServiceProvider serviceProvider,
+ IAbpDistributedLock abpDistributedLock,
+ IDistributedEventBus distributedEventBus,
+ ILoggerFactory loggerFactory)
+ : base(
+ ConnectionStringNameAttribute.GetConnStringName(),
+ unitOfWorkManager, serviceProvider, currentTenant, abpDistributedLock, distributedEventBus, loggerFactory)
{
- return Directory.Exists(GetEntityFrameworkCoreProjectFolderPath());
- }
-
- private bool MigrationsFolderExists()
- {
- var dbMigrationsProjectFolder = GetEntityFrameworkCoreProjectFolderPath();
-
- return Directory.Exists(Path.Combine(dbMigrationsProjectFolder, "Migrations"));
- }
-
- private void AddInitialMigration()
- {
- Logger.LogInformation("Creating initial migration...");
-
- string argumentPrefix;
- string fileName;
-
- if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX) || RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
- {
- argumentPrefix = "-c";
- fileName = "/bin/bash";
- }
- else
- {
- argumentPrefix = "/C";
- fileName = "cmd.exe";
- }
-
- var procStartInfo = new ProcessStartInfo(fileName,
- $"{argumentPrefix} \"abp create-migration-and-run-migrator \"{GetEntityFrameworkCoreProjectFolderPath()}\" --nolayers\""
- );
-
- try
- {
- Process.Start(procStartInfo);
- }
- catch (Exception)
- {
- throw new Exception("Couldn't run ABP CLI...");
- }
+ DataSeeder = dataSeeder;
+ DbSchemaMigrator = dbSchemaMigrator;
+ TenantRepository = tenantRepository;
}
- private string GetEntityFrameworkCoreProjectFolderPath()
+ protected async override Task LockAndApplyDatabaseMigrationsAsync()
{
- var slnDirectoryPath = GetSolutionDirectoryPath();
+ await base.LockAndApplyDatabaseMigrationsAsync();
- if (slnDirectoryPath == null)
+ var tenants = await TenantRepository.GetListAsync();
+ foreach (var tenant in tenants.Where(x => x.IsActive))
{
- throw new Exception("Solution folder not found!");
+ await LockAndApplyDatabaseWithTenantMigrationsAsync(tenant.Id);
}
-
- return Path.Combine(slnDirectoryPath, "PackageName.CompanyName.ProjectName.HttpApi.Host");
}
- private string? GetSolutionDirectoryPath()
+ protected async override Task SeedAsync()
{
- var currentDirectory = new DirectoryInfo(Directory.GetCurrentDirectory());
-
- while (Directory.GetParent(currentDirectory.FullName) != null)
- {
- currentDirectory = Directory.GetParent(currentDirectory.FullName);
-
- if (Directory.GetFiles(currentDirectory!.FullName).FirstOrDefault(f => f.EndsWith(".sln")) != null)
- {
- return currentDirectory.FullName;
- }
-
- // parent host
- currentDirectory = Directory.GetParent(currentDirectory.FullName);
- if (Directory.GetFiles(currentDirectory!.FullName).FirstOrDefault(f => f.EndsWith(".sln")) != null)
- {
- return currentDirectory.FullName;
- }
- }
+ Logger.LogInformation($"Executing {(!CurrentTenant.IsAvailable ? "host" : CurrentTenant.Name ?? CurrentTenant.GetId().ToString())} database seed...");
- return null;
+ await DataSeeder.SeedAsync(CurrentTenant.Id);
}
}
\ No newline at end of file
diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameEntityFrameworkCoreModule.cs b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameEntityFrameworkCoreModule.cs
index 42e4f6a4b..c573211b5 100644
--- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameEntityFrameworkCoreModule.cs
+++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameEntityFrameworkCoreModule.cs
@@ -1,4 +1,5 @@
using LINGYUN.Abp.Data.DbMigrator;
+using LINGYUN.Abp.DataProtection.EntityFrameworkCore;
using LINGYUN.Abp.Saas.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.EntityFrameworkCore;
@@ -22,7 +23,7 @@ namespace PackageName.CompanyName.ProjectName.EntityFrameworkCore;
[DependsOn(
typeof(ProjectNameDomainModule),
typeof(AbpDataDbMigratorModule),
- typeof(AbpEntityFrameworkCoreModule),
+ typeof(AbpDataProtectionEntityFrameworkCoreModule),
#if MySQL
typeof(AbpEntityFrameworkCoreMySQLModule),
#elif SqlServer
diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.HttpApi.Client/PackageName.CompanyName.ProjectName.HttpApi.Client.csproj b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.HttpApi.Client/PackageName.CompanyName.ProjectName.HttpApi.Client.csproj
index 3931245c0..71cc1d5d7 100644
--- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.HttpApi.Client/PackageName.CompanyName.ProjectName.HttpApi.Client.csproj
+++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.HttpApi.Client/PackageName.CompanyName.ProjectName.HttpApi.Client.csproj
@@ -9,7 +9,7 @@
-
+
diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.HttpApi/PackageName.CompanyName.ProjectName.HttpApi.csproj b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.HttpApi/PackageName.CompanyName.ProjectName.HttpApi.csproj
index ddded50c6..337c0b047 100644
--- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.HttpApi/PackageName.CompanyName.ProjectName.HttpApi.csproj
+++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.HttpApi/PackageName.CompanyName.ProjectName.HttpApi.csproj
@@ -9,8 +9,8 @@
-
-
+
+
diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.SettingManagement/PackageName.CompanyName.ProjectName.SettingManagement.csproj b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.SettingManagement/PackageName.CompanyName.ProjectName.SettingManagement.csproj
index e39ee6ee8..2e7ffe21a 100644
--- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.SettingManagement/PackageName.CompanyName.ProjectName.SettingManagement.csproj
+++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.SettingManagement/PackageName.CompanyName.ProjectName.SettingManagement.csproj
@@ -9,13 +9,14 @@
-
-
-
+
+
+
+
diff --git a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.SettingManagement/PackageName/CompanyName/ProjectName/SettingManagement/ProjectNameSettingController.cs b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.SettingManagement/PackageName/CompanyName/ProjectName/SettingManagement/ProjectNameSettingController.cs
index 0351f10ad..8e2a69ca3 100644
--- a/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.SettingManagement/PackageName/CompanyName/ProjectName/SettingManagement/ProjectNameSettingController.cs
+++ b/aspnet-core/templates/content/src/PackageName.CompanyName.ProjectName.SettingManagement/PackageName/CompanyName/ProjectName/SettingManagement/ProjectNameSettingController.cs
@@ -1,4 +1,5 @@
-using LINGYUN.Abp.SettingManagement;
+using Asp.Versioning;
+using LINGYUN.Abp.SettingManagement;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using PackageName.CompanyName.ProjectName.Authorization;
diff --git a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Application.Tests/PackageName.CompanyName.ProjectName.Application.Tests.csproj b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Application.Tests/PackageName.CompanyName.ProjectName.Application.Tests.csproj
index ab9c425af..8a875c135 100644
--- a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Application.Tests/PackageName.CompanyName.ProjectName.Application.Tests.csproj
+++ b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Application.Tests/PackageName.CompanyName.ProjectName.Application.Tests.csproj
@@ -7,7 +7,7 @@
-
+
diff --git a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Application.Tests/PackageName/CompanyName/ProjectName/ProjectNameApplicationTestBase.cs b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Application.Tests/PackageName/CompanyName/ProjectName/ProjectNameApplicationTestBase.cs
index 81ea710fc..64198871d 100644
--- a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Application.Tests/PackageName/CompanyName/ProjectName/ProjectNameApplicationTestBase.cs
+++ b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Application.Tests/PackageName/CompanyName/ProjectName/ProjectNameApplicationTestBase.cs
@@ -1,6 +1,5 @@
-namespace PackageName.CompanyName.ProjectName
+namespace PackageName.CompanyName.ProjectName;
+
+public abstract class ProjectNameApplicationTestBase : ProjectNameTestBase
{
- public abstract class ProjectNameApplicationTestBase : ProjectNameTestBase
- {
- }
}
diff --git a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Application.Tests/PackageName/CompanyName/ProjectName/ProjectNameApplicationTestModule.cs b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Application.Tests/PackageName/CompanyName/ProjectName/ProjectNameApplicationTestModule.cs
index 6d74be333..12175d486 100644
--- a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Application.Tests/PackageName/CompanyName/ProjectName/ProjectNameApplicationTestModule.cs
+++ b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Application.Tests/PackageName/CompanyName/ProjectName/ProjectNameApplicationTestModule.cs
@@ -1,12 +1,11 @@
using Volo.Abp.Modularity;
-namespace PackageName.CompanyName.ProjectName
+namespace PackageName.CompanyName.ProjectName;
+
+[DependsOn(
+ typeof(ProjectNameDomainTestModule),
+ typeof(ProjectNameApplicationModule)
+ )]
+public class ProjectNameApplicationTestModule : AbpModule
{
- [DependsOn(
- typeof(ProjectNameDomainTestModule),
- typeof(ProjectNameApplicationModule)
- )]
- public class ProjectNameApplicationTestModule : AbpModule
- {
- }
}
diff --git a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Domain.Tests/PackageName.CompanyName.ProjectName.Domain.Tests.csproj b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Domain.Tests/PackageName.CompanyName.ProjectName.Domain.Tests.csproj
index bba6e43fd..09e35ceb3 100644
--- a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Domain.Tests/PackageName.CompanyName.ProjectName.Domain.Tests.csproj
+++ b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Domain.Tests/PackageName.CompanyName.ProjectName.Domain.Tests.csproj
@@ -7,7 +7,7 @@
-
+
diff --git a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Domain.Tests/PackageName/CompanyName/ProjectName/ProjectNameDomainTestBase.cs b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Domain.Tests/PackageName/CompanyName/ProjectName/ProjectNameDomainTestBase.cs
index f33c7a00d..01b678fe1 100644
--- a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Domain.Tests/PackageName/CompanyName/ProjectName/ProjectNameDomainTestBase.cs
+++ b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Domain.Tests/PackageName/CompanyName/ProjectName/ProjectNameDomainTestBase.cs
@@ -1,6 +1,5 @@
-namespace PackageName.CompanyName.ProjectName
+namespace PackageName.CompanyName.ProjectName;
+
+public abstract class ProjectNameDomainTestBase : ProjectNameTestBase
{
- public abstract class ProjectNameDomainTestBase : ProjectNameTestBase
- {
- }
}
diff --git a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Domain.Tests/PackageName/CompanyName/ProjectName/ProjectNameDomainTestModule.cs b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Domain.Tests/PackageName/CompanyName/ProjectName/ProjectNameDomainTestModule.cs
index 16404a73f..55d69b77c 100644
--- a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Domain.Tests/PackageName/CompanyName/ProjectName/ProjectNameDomainTestModule.cs
+++ b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.Domain.Tests/PackageName/CompanyName/ProjectName/ProjectNameDomainTestModule.cs
@@ -1,12 +1,11 @@
using Volo.Abp.Modularity;
-namespace PackageName.CompanyName.ProjectName
+namespace PackageName.CompanyName.ProjectName;
+
+[DependsOn(
+ typeof(ProjectNameTestBaseModule),
+ typeof(ProjectNameDomainModule)
+ )]
+public class ProjectNameDomainTestModule : AbpModule
{
- [DependsOn(
- typeof(ProjectNameTestBaseModule),
- typeof(ProjectNameDomainModule)
- )]
- public class ProjectNameDomainTestModule : AbpModule
- {
- }
}
diff --git a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests.csproj b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests.csproj
index aeed48484..61d399721 100644
--- a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests.csproj
+++ b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests.csproj
@@ -1,19 +1,19 @@
-
- net8.0
-
- false
-
+
+ net8.0
+
+ false
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
diff --git a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameEntityFrameworkCoreTestBase.cs b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameEntityFrameworkCoreTestBase.cs
index 7fd73c607..6971ba357 100644
--- a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameEntityFrameworkCoreTestBase.cs
+++ b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameEntityFrameworkCoreTestBase.cs
@@ -1,6 +1,5 @@
-namespace PackageName.CompanyName.ProjectName.EntityFrameworkCore
+namespace PackageName.CompanyName.ProjectName.EntityFrameworkCore;
+
+public abstract class ProjectNameEntityFrameworkCoreTestBase : ProjectNameTestBase
{
- public abstract class ProjectNameEntityFrameworkCoreTestBase : ProjectNameTestBase
- {
- }
}
diff --git a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameEntityFrameworkCoreTestModule.cs b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameEntityFrameworkCoreTestModule.cs
index 39f7d3e43..2146db9ca 100644
--- a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameEntityFrameworkCoreTestModule.cs
+++ b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameEntityFrameworkCoreTestModule.cs
@@ -5,35 +5,34 @@ using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.Modularity;
using Volo.Abp.Uow;
-namespace PackageName.CompanyName.ProjectName.EntityFrameworkCore
+namespace PackageName.CompanyName.ProjectName.EntityFrameworkCore;
+
+[DependsOn(
+ typeof(ProjectNameTestBaseModule),
+ typeof(ProjectNameEntityFrameworkCoreModule)
+ )]
+public class ProjectNameEntityFrameworkCoreTestModule : AbpModule
{
- [DependsOn(
- typeof(ProjectNameTestBaseModule),
- typeof(ProjectNameEntityFrameworkCoreModule)
- )]
- public class ProjectNameEntityFrameworkCoreTestModule : AbpModule
+ public override void ConfigureServices(ServiceConfigurationContext context)
{
- public override void ConfigureServices(ServiceConfigurationContext context)
- {
- context.Services.AddEntityFrameworkInMemoryDatabase();
+ context.Services.AddEntityFrameworkInMemoryDatabase();
- var databaseName = Guid.NewGuid().ToString();
+ var databaseName = Guid.NewGuid().ToString();
- Configure(options =>
+ Configure(options =>
+ {
+ options.Configure(abpDbContextConfigurationContext =>
{
- options.Configure(abpDbContextConfigurationContext =>
- {
- abpDbContextConfigurationContext.DbContextOptions.EnableDetailedErrors();
- abpDbContextConfigurationContext.DbContextOptions.EnableSensitiveDataLogging();
+ abpDbContextConfigurationContext.DbContextOptions.EnableDetailedErrors();
+ abpDbContextConfigurationContext.DbContextOptions.EnableSensitiveDataLogging();
- abpDbContextConfigurationContext.DbContextOptions.UseInMemoryDatabase(databaseName);
- });
+ abpDbContextConfigurationContext.DbContextOptions.UseInMemoryDatabase(databaseName);
});
+ });
- Configure(options =>
- {
- options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled; //EF in-memory database does not support transactions
- });
- }
+ Configure(options =>
+ {
+ options.TransactionBehavior = UnitOfWorkTransactionBehavior.Disabled; //EF in-memory database does not support transactions
+ });
}
}
diff --git a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.TestBase/PackageName.CompanyName.ProjectName.TestBase.csproj b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.TestBase/PackageName.CompanyName.ProjectName.TestBase.csproj
index f02df0996..e983ebfaf 100644
--- a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.TestBase/PackageName.CompanyName.ProjectName.TestBase.csproj
+++ b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.TestBase/PackageName.CompanyName.ProjectName.TestBase.csproj
@@ -7,17 +7,17 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.TestBase/PackageName/CompanyName/ProjectName/ProjectNameTestBase.cs b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.TestBase/PackageName/CompanyName/ProjectName/ProjectNameTestBase.cs
index 825525f0a..79cca930d 100644
--- a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.TestBase/PackageName/CompanyName/ProjectName/ProjectNameTestBase.cs
+++ b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.TestBase/PackageName/CompanyName/ProjectName/ProjectNameTestBase.cs
@@ -6,53 +6,52 @@ using Volo.Abp.Modularity;
using Volo.Abp.Testing;
using Volo.Abp.Uow;
-namespace PackageName.CompanyName.ProjectName
+namespace PackageName.CompanyName.ProjectName;
+
+public abstract class ProjectNameTestBase : AbpIntegratedTest
+ where TStartupModule : IAbpModule
{
- public abstract class ProjectNameTestBase : AbpIntegratedTest
- where TStartupModule : IAbpModule
+ protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options)
{
- protected override void SetAbpApplicationCreationOptions(AbpApplicationCreationOptions options)
- {
- options.UseAutofac();
- }
+ options.UseAutofac();
+ }
- protected virtual Task WithUnitOfWorkAsync(Func func)
- {
- return WithUnitOfWorkAsync(new AbpUnitOfWorkOptions(), func);
- }
+ protected virtual Task WithUnitOfWorkAsync(Func func)
+ {
+ return WithUnitOfWorkAsync(new AbpUnitOfWorkOptions(), func);
+ }
- protected virtual async Task WithUnitOfWorkAsync(AbpUnitOfWorkOptions options, Func action)
+ protected virtual async Task WithUnitOfWorkAsync(AbpUnitOfWorkOptions options, Func action)
+ {
+ using (var scope = ServiceProvider.CreateScope())
{
- using (var scope = ServiceProvider.CreateScope())
- {
- var uowManager = scope.ServiceProvider.GetRequiredService();
+ var uowManager = scope.ServiceProvider.GetRequiredService();
- using (var uow = uowManager.Begin(options))
- {
- await action();
+ using (var uow = uowManager.Begin(options))
+ {
+ await action();
- await uow.CompleteAsync();
- }
+ await uow.CompleteAsync();
}
}
+ }
- protected virtual Task WithUnitOfWorkAsync(Func> func)
- {
- return WithUnitOfWorkAsync(new AbpUnitOfWorkOptions(), func);
- }
+ protected virtual Task WithUnitOfWorkAsync(Func> func)
+ {
+ return WithUnitOfWorkAsync(new AbpUnitOfWorkOptions(), func);
+ }
- protected virtual async Task WithUnitOfWorkAsync(AbpUnitOfWorkOptions options, Func> func)
+ protected virtual async Task WithUnitOfWorkAsync(AbpUnitOfWorkOptions options, Func> func)
+ {
+ using (var scope = ServiceProvider.CreateScope())
{
- using (var scope = ServiceProvider.CreateScope())
+ var uowManager = scope.ServiceProvider.GetRequiredService();
+
+ using (var uow = uowManager.Begin(options))
{
- var uowManager = scope.ServiceProvider.GetRequiredService();
-
- using (var uow = uowManager.Begin(options))
- {
- var result = await func();
- await uow.CompleteAsync();
- return result;
- }
+ var result = await func();
+ await uow.CompleteAsync();
+ return result;
}
}
}
diff --git a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.TestBase/PackageName/CompanyName/ProjectName/ProjectNameTestBaseModule.cs b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.TestBase/PackageName/CompanyName/ProjectName/ProjectNameTestBaseModule.cs
index a24ec432c..adab3640d 100644
--- a/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.TestBase/PackageName/CompanyName/ProjectName/ProjectNameTestBaseModule.cs
+++ b/aspnet-core/templates/content/tests/PackageName.CompanyName.ProjectName.TestBase/PackageName/CompanyName/ProjectName/ProjectNameTestBaseModule.cs
@@ -6,20 +6,19 @@ using Volo.Abp.Features;
using Volo.Abp.MemoryDb;
using Volo.Abp.Modularity;
-namespace PackageName.CompanyName.ProjectName
+namespace PackageName.CompanyName.ProjectName;
+
+[DependsOn(
+ typeof(AbpAutofacModule),
+ typeof(AbpTestBaseModule),
+ typeof(AbpAuthorizationModule),
+ typeof(AbpFeaturesModule),
+ typeof(AbpMemoryDbModule)
+ )]
+public class ProjectNameTestBaseModule : AbpModule
{
- [DependsOn(
- typeof(AbpAutofacModule),
- typeof(AbpTestBaseModule),
- typeof(AbpAuthorizationModule),
- typeof(AbpFeaturesModule),
- typeof(AbpMemoryDbModule)
- )]
- public class ProjectNameTestBaseModule : AbpModule
+ public override void ConfigureServices(ServiceConfigurationContext context)
{
- public override void ConfigureServices(ServiceConfigurationContext context)
- {
- context.Services.AddAlwaysAllowAuthorization();
- }
+ context.Services.AddAlwaysAllowAuthorization();
}
}