diff --git a/aspnet-core/framework/cli/LINGYUN.Abp.Cli/LINGYUN.Abp.Cli.csproj b/aspnet-core/framework/cli/LINGYUN.Abp.Cli/LINGYUN.Abp.Cli.csproj
index c609670ac..d5c4c19c6 100644
--- a/aspnet-core/framework/cli/LINGYUN.Abp.Cli/LINGYUN.Abp.Cli.csproj
+++ b/aspnet-core/framework/cli/LINGYUN.Abp.Cli/LINGYUN.Abp.Cli.csproj
@@ -1,11 +1,11 @@
-
+
Exe
net10.0
- 9.3.6
+ 10.2.0
colin
Use LINGYUN.MicroService.Templates command line
true
@@ -28,7 +28,7 @@
-
+
diff --git a/aspnet-core/templates/micro/PackageName.CompanyName.ProjectName.csproj b/aspnet-core/templates/micro/PackageName.CompanyName.ProjectName.csproj
index e53952932..0bbc1910a 100644
--- a/aspnet-core/templates/micro/PackageName.CompanyName.ProjectName.csproj
+++ b/aspnet-core/templates/micro/PackageName.CompanyName.ProjectName.csproj
@@ -3,7 +3,7 @@
net10.0
true
LINGYUN.Abp.MicroService.Templates
- 9.3.6
+ 10.2.0
colin.in@foxmail.com
Abp framework micro-service template
MIT
@@ -27,4 +27,4 @@
content
-
\ No newline at end of file
+
diff --git a/aspnet-core/templates/micro/content/.gitlab-ci.yml b/aspnet-core/templates/micro/content/.gitlab-ci.yml
index 40e9f2c72..ac142b284 100644
--- a/aspnet-core/templates/micro/content/.gitlab-ci.yml
+++ b/aspnet-core/templates/micro/content/.gitlab-ci.yml
@@ -1,5 +1,3 @@
-image: mcr.microsoft.com/dotnet/sdk:9.0
-
stages:
- build
- test
diff --git a/aspnet-core/templates/micro/content/deploy/deployment.yaml b/aspnet-core/templates/micro/content/.k8s/deployment.yaml
similarity index 100%
rename from aspnet-core/templates/micro/content/deploy/deployment.yaml
rename to aspnet-core/templates/micro/content/.k8s/deployment.yaml
diff --git a/aspnet-core/templates/micro/content/Directory.Packages.props b/aspnet-core/templates/micro/content/Directory.Packages.props
index de3aa0208..7e7b4d4a5 100644
--- a/aspnet-core/templates/micro/content/Directory.Packages.props
+++ b/aspnet-core/templates/micro/content/Directory.Packages.props
@@ -1,12 +1,12 @@
- 8.3.5
- 2.15.1
- 9.3.6
- 9.3.6
- 9.0.5
- 9.0.5
- 9.0.5
+ 10.0.0
+ 2.16.1
+ 10.2.0
+ 10.2.0
+ 10.0.2
+ 10.0.2
+ 10.0.2
true
@@ -21,6 +21,7 @@
+
@@ -48,7 +49,7 @@
-
+
@@ -243,7 +244,7 @@
-
+
@@ -332,6 +333,7 @@
+
@@ -392,9 +394,11 @@
-
+
+
+
@@ -430,55 +434,57 @@
-
-
+
+
+
-
-
+
+
-
-
+
+
+
-
+
-
+
-
+
-
+
-
-
-
-
+
+
+
+
-
+
-
+
-
-
-
+
+
+
@@ -486,15 +492,15 @@
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
diff --git a/aspnet-core/templates/micro/content/PackageName.CompanyName.ProjectName.sln b/aspnet-core/templates/micro/content/PackageName.CompanyName.ProjectName.sln
deleted file mode 100644
index 86f0bf749..000000000
--- a/aspnet-core/templates/micro/content/PackageName.CompanyName.ProjectName.sln
+++ /dev/null
@@ -1,166 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-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.HttpApi.Host", "host\PackageName.CompanyName.ProjectName.HttpApi.Host\PackageName.CompanyName.ProjectName.HttpApi.Host.csproj", "{31E33CE2-71D3-43FF-9A30-2DCC82C607AE}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".Solution Items", ".Solution Items", "{C9675742-7986-4BC1-9781-FD1C3C5B6287}"
- ProjectSection(SolutionItems) = preProject
- .gitignore = .gitignore
- common.props = common.props
- configureawait.props = configureawait.props
- Directory.Build.props = Directory.Build.props
- 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}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{A9CB1547-1C2C-4A23-82EC-C834C1626E0A}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.Application.Tests", "tests\PackageName.CompanyName.ProjectName.Application.Tests\PackageName.CompanyName.ProjectName.Application.Tests.csproj", "{9262FE7A-76B2-424F-8C34-AFA1D95D7E5A}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.Domain.Tests", "tests\PackageName.CompanyName.ProjectName.Domain.Tests\PackageName.CompanyName.ProjectName.Domain.Tests.csproj", "{A0D1F8A4-3494-4E26-9E2D-DB874B93DBCE}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests", "tests\PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests\PackageName.CompanyName.ProjectName.EntityFrameworkCore.Tests.csproj", "{0B2E1C9E-092D-4E5F-BE9F-5506E689FC85}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.TestBase", "tests\PackageName.CompanyName.ProjectName.TestBase\PackageName.CompanyName.ProjectName.TestBase.csproj", "{4A9D43A2-D08B-40E8-9C74-F2B95BF81AED}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PackageName.CompanyName.ProjectName.DbMigrator", "migrations\PackageName.CompanyName.ProjectName.DbMigrator\PackageName.CompanyName.ProjectName.DbMigrator.csproj", "{F6EE5BCD-69C7-4C8A-8B45-251AFE2BB01E}"
-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
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore", "migrations\PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore\PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore.csproj", "{285408F0-EF7A-41B8-9828-A9B9C84E635F}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "migrations", "migrations", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}"
- ProjectSection(SolutionItems) = preProject
- migrations\migrations-database.ps1 = migrations\migrations-database.ps1
- EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".deploy", ".deploy", "{46954769-3C8A-4E05-912A-91B896A91B97}"
- ProjectSection(SolutionItems) = preProject
- deploy\deployment.yaml = deploy\deployment.yaml
- deploy\docker-compose.override.yml = deploy\docker-compose.override.yml
- deploy\docker-compose.yml = deploy\docker-compose.yml
- EndProjectSection
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".workflows", ".workflows", "{CE7B8857-00E7-4903-A7C1-0285398616A8}"
- ProjectSection(SolutionItems) = preProject
- .gitlab-ci.yml = .gitlab-ci.yml
- EndProjectSection
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Release|Any CPU = Release|Any CPU
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {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
- {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
- {9262FE7A-76B2-424F-8C34-AFA1D95D7E5A}.Release|Any CPU.Build.0 = Release|Any CPU
- {A0D1F8A4-3494-4E26-9E2D-DB874B93DBCE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {A0D1F8A4-3494-4E26-9E2D-DB874B93DBCE}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {A0D1F8A4-3494-4E26-9E2D-DB874B93DBCE}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {A0D1F8A4-3494-4E26-9E2D-DB874B93DBCE}.Release|Any CPU.Build.0 = Release|Any CPU
- {0B2E1C9E-092D-4E5F-BE9F-5506E689FC85}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {0B2E1C9E-092D-4E5F-BE9F-5506E689FC85}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {0B2E1C9E-092D-4E5F-BE9F-5506E689FC85}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {0B2E1C9E-092D-4E5F-BE9F-5506E689FC85}.Release|Any CPU.Build.0 = Release|Any CPU
- {4A9D43A2-D08B-40E8-9C74-F2B95BF81AED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {4A9D43A2-D08B-40E8-9C74-F2B95BF81AED}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {4A9D43A2-D08B-40E8-9C74-F2B95BF81AED}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {4A9D43A2-D08B-40E8-9C74-F2B95BF81AED}.Release|Any CPU.Build.0 = Release|Any CPU
- {F6EE5BCD-69C7-4C8A-8B45-251AFE2BB01E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {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
- {285408F0-EF7A-41B8-9828-A9B9C84E635F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {285408F0-EF7A-41B8-9828-A9B9C84E635F}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {285408F0-EF7A-41B8-9828-A9B9C84E635F}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {285408F0-EF7A-41B8-9828-A9B9C84E635F}.Release|Any CPU.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(NestedProjects) = preSolution
- {31E33CE2-71D3-43FF-9A30-2DCC82C607AE} = {4786387C-C1C5-46F8-806F-EBC54DB0A4FA}
- {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} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
- {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}
- {285408F0-EF7A-41B8-9828-A9B9C84E635F} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {62C0F185-E2C2-46A2-B4B2-5E703E25849E}
- EndGlobalSection
-EndGlobal
diff --git a/aspnet-core/templates/micro/content/PackageName.CompanyName.ProjectName.slnx b/aspnet-core/templates/micro/content/PackageName.CompanyName.ProjectName.slnx
new file mode 100644
index 000000000..38bbf0bf3
--- /dev/null
+++ b/aspnet-core/templates/micro/content/PackageName.CompanyName.ProjectName.slnx
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/aspnet-core/templates/micro/content/common.props b/aspnet-core/templates/micro/content/common.props
index 76c45eb0d..8729c3ca2 100644
--- a/aspnet-core/templates/micro/content/common.props
+++ b/aspnet-core/templates/micro/content/common.props
@@ -1,12 +1,12 @@
latest
- 9.3.6
+ 10.2.0
colin
$(NoWarn);CS1591;CS0436;CS8618;NU1803
https://github.com/colinin/abp-next-admin
$(SolutionDir)LocalNuget
- 9.3.6
+ 10.2.0
MIT
git
https://github.com/colinin/abp-next-admin
diff --git a/aspnet-core/templates/micro/content/deploy/docker-compose.override.yml b/aspnet-core/templates/micro/content/deploy/docker-compose.override.yml
deleted file mode 100644
index 9dfa8de2a..000000000
--- a/aspnet-core/templates/micro/content/deploy/docker-compose.override.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-services:
- project-name-api:
- build:
- context: ../host/PackageName.CompanyName.ProjectName.HttpApi.Host/bin/Release/net9.0
- dockerfile: ../host/PackageName.CompanyName.ProjectName.HttpApi.Host/Dockerfile
- volumes:
- - /var/opt/project-name/logs:/app/Logs
- - /var/opt/project-name/modules:/app/Modules
- restart: always
diff --git a/aspnet-core/templates/micro/content/deploy/docker-compose.yml b/aspnet-core/templates/micro/content/docker-compose.yml
similarity index 62%
rename from aspnet-core/templates/micro/content/deploy/docker-compose.yml
rename to aspnet-core/templates/micro/content/docker-compose.yml
index 2473b0024..d953c8eb6 100644
--- a/aspnet-core/templates/micro/content/deploy/docker-compose.yml
+++ b/aspnet-core/templates/micro/content/docker-compose.yml
@@ -1,5 +1,8 @@
services:
project-name-api:
+ build:
+ context: .
+ dockerfile: host/PackageName.CompanyName.ProjectName.HttpApi.Host/Dockerfile
hostname: project-name-api
container_name: project-name-api
environment:
@@ -13,3 +16,7 @@ services:
interval: 10s
timeout: 5s
retries: 5
+ restart: always
+ volumes:
+ - /var/opt/project-name/logs:/app/Logs
+ - /var/opt/project-name/modules:/app/Modules
diff --git a/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/Dockerfile b/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/Dockerfile
index 60ef36d4f..f034fe757 100644
--- a/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/Dockerfile
+++ b/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/Dockerfile
@@ -1,4 +1,4 @@
-FROM mcr.microsoft.com/dotnet/aspnet:9.0
+FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS base
LABEL maintainer="colin.in@foxmail.com"
WORKDIR /app
@@ -43,15 +43,46 @@ COPY . /app
#RUN apt-get clean
#RUN apt-get update
+RUN apt update && apt install wget -y
+
+USER $APP_UID
+
## .NET 8.0 默认使用8080端口,变更为80端口需要环境变量ASPNETCORE_HTTP_PORTS=80
## .NET 8.0 defaults to port 8080, changing to port 80 requires the environment variable ASPNETCORE.HTTP-PORTS=80
-
EXPOSE 8080/tcp
VOLUME [ "./app/Logs" ]
VOLUME [ "./app/Modules" ]
-RUN apt update
-RUN apt install wget -y
+FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
+ARG BUILD_CONFIGURATION=Release
+WORKDIR /build
+
+## 复制构建项目所需配置
+COPY ["common.props", "./"]
+COPY ["configureawait.props", "./"]
+COPY ["Directory.Build.props", "./"]
+COPY ["Directory.Packages.props", "./"]
+COPY ["NuGet.Config", "./"]
-ENTRYPOINT ["dotnet", "PackageName.CompanyName.ProjectName.HttpApi.Host.dll"]
+## 复制项目结构
+COPY ["src/", "build/src/"]
+COPY ["migrations/", "build/migrations/"]
+COPY ["host/", "build/host/"]
+RUN dotnet restore "build/host/PackageName.CompanyName.ProjectName.HttpApi.Host/PackageName.CompanyName.ProjectName.HttpApi.Host.csproj"
+
+## 构建
+COPY . .
+WORKDIR "/build/host/PackageName.CompanyName.ProjectName.HttpApi.Host"
+RUN dotnet build "./PackageName.CompanyName.ProjectName.HttpApi.Host.csproj" -c $BUILD_CONFIGURATION -o /app/build
+
+## 发布
+FROM build AS publish
+ARG BUILD_CONFIGURATION=Release
+RUN dotnet publish "./PackageName.CompanyName.ProjectName.HttpApi.Host.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
+
+## 运行
+FROM base AS final
+WORKDIR /app
+COPY --from=publish /app/publish .
+ENTRYPOINT ["dotnet", "PackageName.CompanyName.ProjectName.HttpApi.Host.dll"]
\ No newline at end of file
diff --git a/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/PackageName.CompanyName.ProjectName.HttpApi.Host.csproj b/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/PackageName.CompanyName.ProjectName.HttpApi.Host.csproj
index f3bdee41c..7865ea71f 100644
--- a/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/PackageName.CompanyName.ProjectName.HttpApi.Host.csproj
+++ b/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/PackageName.CompanyName.ProjectName.HttpApi.Host.csproj
@@ -19,11 +19,12 @@
+
-
+
@@ -44,6 +45,7 @@
+
diff --git a/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.Configure.cs b/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.Configure.cs
index eedb595cf..0ab7f0913 100644
--- a/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.Configure.cs
+++ b/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.Configure.cs
@@ -2,7 +2,7 @@
using LINGYUN.Abp.Dapr.Client.ClientProxying;
using LINGYUN.Abp.ExceptionHandling;
using LINGYUN.Abp.ExceptionHandling.Emailing;
-using LINGYUN.Abp.Exporter.MiniExcel;
+using LINGYUN.Abp.Exporter.MiniSoftware;
using LINGYUN.Abp.Localization.CultureMap;
using LINGYUN.Abp.LocalizationManagement;
using LINGYUN.Abp.Serilog.Enrichers.Application;
@@ -20,8 +20,9 @@ using Microsoft.Extensions.Caching.StackExchangeRedis;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.IdentityModel.Tokens;
-using Microsoft.OpenApi.Models;
+using Microsoft.OpenApi;
using StackExchange.Redis;
+using Swashbuckle.AspNetCore.SwaggerGen;
using System;
using System.Collections.Generic;
using System.IO;
@@ -137,8 +138,11 @@ public partial class ProjectNameHttpApiHostModule
var distributedLockIsEnabled = configuration["DistributedLock:IsEnabled"];
if (distributedLockIsEnabled.IsNullOrWhiteSpace() || bool.Parse(distributedLockIsEnabled))
{
- var redis = ConnectionMultiplexer.Connect(configuration["DistributedLock:Redis:Configuration"]);
- services.AddSingleton(_ => new RedisDistributedSynchronizationProvider(redis.GetDatabase()));
+ services.AddSingleton(_ =>
+ {
+ return new RedisDistributedSynchronizationProvider(
+ ConnectionMultiplexer.Connect(configuration["DistributedLock:Redis:Configuration"]).GetDatabase());
+ });
}
}
private void ConfigureExceptionHandling()
@@ -232,12 +236,16 @@ public partial class ProjectNameHttpApiHostModule
services.AddHealthChecks();
}
- private void ConfigureMiniExcel()
+ private void ConfigureMiniSoftware()
{
Configure(options =>
{
// MiniExcel导入导出配置
});
+ Configure(options =>
+ {
+ // MiniWord导入导出配置
+ });
}
private void ConfigureFeatureManagement(IConfiguration configuration)
@@ -368,25 +376,16 @@ public partial class ProjectNameHttpApiHostModule
BearerFormat = "JWT"
});
- options.AddSecurityRequirement(new OpenApiSecurityRequirement
- {
- {
- new OpenApiSecurityScheme
- {
- Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" }
- },
- new string[] { }
- }
- });
-
var currentPath = AppContext.BaseDirectory;
var xmlDocFiles = Directory.GetFiles(currentPath, "PackageName.CompanyName.ProjectName.*.xml");
+ xmlDocFiles.AddIfNotContains(Directory.GetFiles(AppContext.BaseDirectory, "Volo.Abp.*.xml"));
foreach (var xmlDocFile in xmlDocFiles)
{
options.IncludeXmlComments(xmlDocFile);
}
+ options.SchemaFilter();
options.OperationFilter();
options.HideAbpEndpoints();
});
@@ -426,6 +425,7 @@ public partial class ProjectNameHttpApiHostModule
{
Configure(options =>
{
+ configuration.GetSection("AntiForgery").Bind(options);
// options.AutoValidate = false;
// options.AutoValidateFilter = (type) => !type.Namespace.Contains("elsa", StringComparison.CurrentCultureIgnoreCase);
});
@@ -455,15 +455,13 @@ public partial class ProjectNameHttpApiHostModule
options.TokenValidationParameters.ValidAudiences = validAudiences;
}
});
-
- if (!isDevelopment)
- {
- var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]);
- services
- .AddDataProtection()
- .SetApplicationName("LINGYUN.Abp.Application")
- .PersistKeysToStackExchangeRedis(redis, "LINGYUN.Abp.Application:DataProtection:Protection-Keys");
- }
+ services.AddDataProtection()
+ .SetApplicationName("LINGYUN.Abp.Application")
+ .PersistKeysToStackExchangeRedis(() =>
+ {
+ return ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]).GetDatabase();
+ },
+ "LINGYUN.Abp.Application:DataProtection:Protection-Keys");
}
private void ConfigureCors(IServiceCollection services, IConfiguration configuration)
diff --git a/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.cs b/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.cs
index 0087fc9c8..0f2d15d71 100644
--- a/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.cs
+++ b/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/ProjectNameHttpApiHostModule.cs
@@ -1,19 +1,20 @@
using LINGYUN.Abp.AspNetCore.HttpOverrides;
using LINGYUN.Abp.AspNetCore.Mvc.Wrapper;
using LINGYUN.Abp.AuditLogging.Elasticsearch;
+using LINGYUN.Abp.BlobStoring.BlobManagement;
using LINGYUN.Abp.Claims.Mapping;
using LINGYUN.Abp.Emailing.Platform;
using LINGYUN.Abp.EventBus.CAP;
using LINGYUN.Abp.ExceptionHandling.Emailing;
-using LINGYUN.Abp.Exporter.MiniExcel;
+using LINGYUN.Abp.Exporter.MiniSoftware;
using LINGYUN.Abp.Identity.Session.AspNetCore;
using LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore;
using LINGYUN.Abp.Saas.EntityFrameworkCore;
using LINGYUN.Abp.Serilog.Enrichers.Application;
using LINGYUN.Abp.Serilog.Enrichers.UniqueId;
using LINGYUN.Abp.Sms.Platform;
-using LINGYUN.Abp.Telemetry.SkyWalking;
using LINGYUN.Abp.Telemetry.OpenTelemetry;
+using LINGYUN.Abp.Telemetry.SkyWalking;
using LINGYUN.Abp.TextTemplating.EntityFrameworkCore;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
@@ -61,6 +62,7 @@ namespace PackageName.CompanyName.ProjectName;
typeof(AbpTextTemplatingEntityFrameworkCoreModule),
typeof(AbpAspNetCoreAuthenticationJwtBearerModule),
+ typeof(AbpBlobStoringBlobManagementModule),
typeof(AbpCachingStackExchangeRedisModule),
typeof(AbpDistributedLockingModule),
typeof(AbpAspNetCoreMvcWrapperModule),
@@ -68,7 +70,7 @@ namespace PackageName.CompanyName.ProjectName;
typeof(AbpIdentitySessionAspNetCoreModule),
typeof(AbpTelemetrySkyWalkingModule),
typeof(AbpTelemetryOpenTelemetryModule),
- typeof(AbpExporterMiniExcelModule),
+ typeof(AbpExporterMiniSoftwareModule),
typeof(AbpClaimsMappingModule),
typeof(AbpEmailingPlatformModule),
typeof(AbpSmsPlatformModule),
@@ -93,7 +95,7 @@ public partial class ProjectNameHttpApiHostModule : AbpModule
var configuration = context.Services.GetConfiguration();
ConfigureWrapper();
- ConfigureMiniExcel();
+ ConfigureMiniSoftware();
ConfigureExceptionHandling();
ConfigureVirtualFileSystem();
ConfigureTiming(configuration);
diff --git a/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/Swashbuckle/AspNetCore/SwaggerGen/EnumDescriptionSchemaFilter.cs b/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/Swashbuckle/AspNetCore/SwaggerGen/EnumDescriptionSchemaFilter.cs
new file mode 100644
index 000000000..f7adfe64f
--- /dev/null
+++ b/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/Swashbuckle/AspNetCore/SwaggerGen/EnumDescriptionSchemaFilter.cs
@@ -0,0 +1,41 @@
+using Microsoft.OpenApi;
+using System;
+using System.ComponentModel;
+using System.Reflection;
+
+namespace Swashbuckle.AspNetCore.SwaggerGen;
+
+#nullable enable
+public class EnumDescriptionSchemaFilter : ISchemaFilter
+{
+ public void Apply(IOpenApiSchema schema, SchemaFilterContext context)
+ {
+ if (context.Type.IsEnum)
+ {
+ var enumType = context.Type;
+ var enumValues = Enum.GetValues(enumType);
+ var underlyingType = Enum.GetUnderlyingType(enumType);
+
+ var enumDesc = enumType.GetCustomAttribute()?.Description ?? enumType.Name;
+ schema.Description += $"{enumDesc}
";
+
+ schema.Description += "Options:
";
+
+ foreach (var value in enumValues)
+ {
+ string? description = default!;
+ var name = Enum.GetName(enumType, value);
+ if (name != null)
+ {
+ var memberInfo = enumType.GetMember(name)[0];
+ description = memberInfo.GetCustomAttribute()?.Description ?? name;
+ }
+ var numericValue = Convert.ChangeType(value, underlyingType);
+ schema.Description += $"- {numericValue}: {name}({description ?? "No description."})
";
+ }
+
+ schema.Description += "
";
+ }
+ }
+}
+#nullable disable
diff --git a/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/Swashbuckle/AspNetCore/SwaggerGen/TenantHeaderParamter.cs b/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/Swashbuckle/AspNetCore/SwaggerGen/TenantHeaderParamter.cs
new file mode 100644
index 000000000..25809383e
--- /dev/null
+++ b/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/Swashbuckle/AspNetCore/SwaggerGen/TenantHeaderParamter.cs
@@ -0,0 +1,35 @@
+using Microsoft.Extensions.Options;
+using Microsoft.OpenApi;
+using System.Collections.Generic;
+using Volo.Abp.AspNetCore.MultiTenancy;
+using Volo.Abp.MultiTenancy;
+
+namespace Swashbuckle.AspNetCore.SwaggerGen;
+
+public class TenantHeaderParamter : IOperationFilter
+{
+ private readonly AbpMultiTenancyOptions _multiTenancyOptions;
+ private readonly AbpAspNetCoreMultiTenancyOptions _aspNetCoreMultiTenancyOptions;
+ public TenantHeaderParamter(
+ IOptions multiTenancyOptions,
+ IOptions aspNetCoreMultiTenancyOptions)
+ {
+ _multiTenancyOptions = multiTenancyOptions.Value;
+ _aspNetCoreMultiTenancyOptions = aspNetCoreMultiTenancyOptions.Value;
+ }
+
+ public void Apply(OpenApiOperation operation, OperationFilterContext context)
+ {
+ if (_multiTenancyOptions.IsEnabled)
+ {
+ operation.Parameters ??= new List();
+ operation.Parameters.Add(new OpenApiParameter
+ {
+ Name = _aspNetCoreMultiTenancyOptions.TenantKey,
+ In = ParameterLocation.Header,
+ Description = "Tenant Id in http header",
+ Required = false
+ });
+ }
+ }
+}
diff --git a/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/TenantHeaderParamter.cs b/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/TenantHeaderParamter.cs
deleted file mode 100644
index e628695db..000000000
--- a/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/TenantHeaderParamter.cs
+++ /dev/null
@@ -1,31 +0,0 @@
-using Microsoft.Extensions.Options;
-using Microsoft.OpenApi.Models;
-using Swashbuckle.AspNetCore.SwaggerGen;
-using System.Collections.Generic;
-using Volo.Abp.MultiTenancy;
-
-namespace PackageName.CompanyName.ProjectName;
-
-public class TenantHeaderParamter : IOperationFilter
-{
- private readonly AbpMultiTenancyOptions _options;
- public TenantHeaderParamter(
- IOptions options)
- {
- _options = options.Value;
- }
- public void Apply(OpenApiOperation operation, OperationFilterContext context)
- {
- if (_options.IsEnabled)
- {
- operation.Parameters = operation.Parameters ?? new List();
- operation.Parameters.Add(new OpenApiParameter
- {
- Name = TenantResolverConsts.DefaultTenantKey,
- In = ParameterLocation.Header,
- Description = "Tenant Id/Name",
- Required = false
- });
- }
- }
-}
diff --git a/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/appsettings.Development.json b/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/appsettings.Development.json
index 6ad910b64..0dacd0e61 100644
--- a/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/appsettings.Development.json
+++ b/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/appsettings.Development.json
@@ -83,6 +83,10 @@
}
},
"RemoteServices": {
+ "BlobManagement": {
+ "BaseUrl": "http://127.0.0.1:30025",
+ "UseCurrentAccessToken": "true"
+ },
"Platform": {
"BaseUrl": "http://127.0.0.1:30025",
"UseCurrentAccessToken": "False"
@@ -142,7 +146,8 @@
},
"AuthServer": {
"Authority": "http://127.0.0.1:44385/",
- "Audience": "lingyun-abp-application",
+ "Audience": "ProjectName",
+ "ValidAudiences": [ "lingyun-abp-application" ],
"MapInboundClaims": false,
"RequireHttpsMetadata": false,
"SwaggerClientId": "vue-oauth-client"
@@ -184,24 +189,23 @@
"Override": {
"System": "Warning",
"Microsoft": "Warning",
+ "Microsoft.EntityFrameworkCore": "Information",
"DotNetCore": "Debug"
}
},
"WriteTo": [
{
- "Name": "Console",
- "Args": {
- "restrictedToMinimumLevel": "Debug",
- "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] [{SourceContext}] [{ProcessId}] [{ThreadId}] - {Message:lj}{NewLine}{Exception}"
- }
- },
- {
- "Name": "Elasticsearch",
+ "Name": "Async",
"Args": {
- "nodeUris": "http://127.0.0.1:9200",
- "indexFormat": "abp.dev.logging-{0:yyyy.MM.dd}",
- "autoRegisterTemplate": true,
- "autoRegisterTemplateVersion": "ESv7"
+ "configure": [
+ {
+ "Name": "Console",
+ "Args": {
+ "restrictedToMinimumLevel": "Debug",
+ "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] [{SourceContext}] [{ProcessId}] [{ThreadId}] - {Message:lj}{NewLine}{Exception}"
+ }
+ }
+ ]
}
}
]
diff --git a/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/appsettings.json b/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/appsettings.json
index b50f377f8..89b10a062 100644
--- a/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/appsettings.json
+++ b/aspnet-core/templates/micro/content/host/PackageName.CompanyName.ProjectName.HttpApi.Host/appsettings.json
@@ -1,6 +1,9 @@
{
+ "AntiForgery": {
+ "AutoValidate": false
+ },
"App": {
- "CorsOrigins": "http://127.0.0.1:30000",
+ "CorsOrigins": ["http://127.0.0.1:30000"],
"RefreshClaimsUrl": "http://127.0.0.1:30015/",
"HealthChecks": "/healthz"
},
@@ -35,72 +38,77 @@
"Enrich": [ "FromLogContext", "WithProcessId", "WithThreadId", "WithEnvironmentName", "WithMachineName", "WithApplicationName", "WithUniqueId" ],
"WriteTo": [
{
- "Name": "Console",
- "Args": {
- "initialMinimumLevel": "Verbose",
- "standardErrorFromLevel": "Verbose",
- "restrictedToMinimumLevel": "Verbose",
- "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] [{SourceContext}] [{ProcessId}] [{ThreadId}] - {Message:lj}{NewLine}{Exception}"
- }
- },
- {
- "Name": "File",
- "Args": {
- "path": "Logs/Debug-.log",
- "restrictedToMinimumLevel": "Debug",
- "rollingInterval": "Day",
- "rollOnFileSizeLimit": true,
- "retainedFileCountLimit": 50,
- "fileSizeLimitBytes": 5242880,
- "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] [{SourceContext}] [{ProcessId}] [{ThreadId}] - {Message:lj}{NewLine}{Exception}"
- }
- },
- {
- "Name": "File",
- "Args": {
- "path": "Logs/Info-.log",
- "restrictedToMinimumLevel": "Information",
- "rollingInterval": "Day",
- "rollOnFileSizeLimit": true,
- "retainedFileCountLimit": 50,
- "fileSizeLimitBytes": 5242880,
- "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] [{SourceContext}] [{ProcessId}] [{ThreadId}] - {Message:lj}{NewLine}{Exception}"
- }
- },
- {
- "Name": "File",
- "Args": {
- "path": "Logs/Warn-.log",
- "restrictedToMinimumLevel": "Warning",
- "rollingInterval": "Day",
- "rollOnFileSizeLimit": true,
- "retainedFileCountLimit": 50,
- "fileSizeLimitBytes": 5242880,
- "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] [{SourceContext}] [{ProcessId}] [{ThreadId}] - {Message:lj}{NewLine}{Exception}"
- }
- },
- {
- "Name": "File",
- "Args": {
- "path": "Logs/Error-.log",
- "restrictedToMinimumLevel": "Error",
- "rollingInterval": "Day",
- "rollOnFileSizeLimit": true,
- "retainedFileCountLimit": 50,
- "fileSizeLimitBytes": 5242880,
- "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] [{SourceContext}] [{ProcessId}] [{ThreadId}] - {Message:lj}{NewLine}{Exception}"
- }
- },
- {
- "Name": "File",
+ "Name": "Async",
"Args": {
- "path": "Logs/Fatal-.log",
- "restrictedToMinimumLevel": "Fatal",
- "rollingInterval": "Day",
- "rollOnFileSizeLimit": true,
- "retainedFileCountLimit": 50,
- "fileSizeLimitBytes": 5242880,
- "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] [{SourceContext}] [{ProcessId}] [{ThreadId}] - {Message:lj}{NewLine}{Exception}"
+ "configure": [
+ {
+ "Name": "Console",
+ "Args": {
+ "restrictedToMinimumLevel": "Debug",
+ "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] [{SourceContext}] [{ProcessId}] [{ThreadId}] - {Message:lj}{NewLine}{Exception}"
+ }
+ },
+ {
+ "Name": "File",
+ "Args": {
+ "path": "Logs/Debug-.log",
+ "restrictedToMinimumLevel": "Debug",
+ "rollingInterval": "Day",
+ "rollOnFileSizeLimit": true,
+ "retainedFileCountLimit": 50,
+ "fileSizeLimitBytes": 5242880,
+ "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] [{SourceContext}] [{ProcessId}] [{ThreadId}] - {Message:lj}{NewLine}{Exception}"
+ }
+ },
+ {
+ "Name": "File",
+ "Args": {
+ "path": "Logs/Info-.log",
+ "restrictedToMinimumLevel": "Information",
+ "rollingInterval": "Day",
+ "rollOnFileSizeLimit": true,
+ "retainedFileCountLimit": 50,
+ "fileSizeLimitBytes": 5242880,
+ "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] [{SourceContext}] [{ProcessId}] [{ThreadId}] - {Message:lj}{NewLine}{Exception}"
+ }
+ },
+ {
+ "Name": "File",
+ "Args": {
+ "path": "Logs/Warn-.log",
+ "restrictedToMinimumLevel": "Warning",
+ "rollingInterval": "Day",
+ "rollOnFileSizeLimit": true,
+ "retainedFileCountLimit": 50,
+ "fileSizeLimitBytes": 5242880,
+ "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] [{SourceContext}] [{ProcessId}] [{ThreadId}] - {Message:lj}{NewLine}{Exception}"
+ }
+ },
+ {
+ "Name": "File",
+ "Args": {
+ "path": "Logs/Error-.log",
+ "restrictedToMinimumLevel": "Error",
+ "rollingInterval": "Day",
+ "rollOnFileSizeLimit": true,
+ "retainedFileCountLimit": 50,
+ "fileSizeLimitBytes": 5242880,
+ "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] [{SourceContext}] [{ProcessId}] [{ThreadId}] - {Message:lj}{NewLine}{Exception}"
+ }
+ },
+ {
+ "Name": "File",
+ "Args": {
+ "path": "Logs/Fatal-.log",
+ "restrictedToMinimumLevel": "Fatal",
+ "rollingInterval": "Day",
+ "rollOnFileSizeLimit": true,
+ "retainedFileCountLimit": 50,
+ "fileSizeLimitBytes": 5242880,
+ "outputTemplate": "{Timestamp:yyyy-MM-dd HH:mm:ss} [{Level:u3}] [{SourceContext}] [{ProcessId}] [{ThreadId}] - {Message:lj}{NewLine}{Exception}"
+ }
+ }
+ ]
}
}
]
diff --git a/aspnet-core/templates/micro/content/migrations/PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore/PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore.csproj b/aspnet-core/templates/micro/content/migrations/PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore/PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore.csproj
index 1d4b91f98..3419cbb03 100644
--- a/aspnet-core/templates/micro/content/migrations/PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore/PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore.csproj
+++ b/aspnet-core/templates/micro/content/migrations/PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore/PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore.csproj
@@ -5,9 +5,14 @@
net10.0
- enable
- enable
+ PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore
+ PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore
+ false
+ false
+ false
false
+ enable
+ PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore
@@ -17,7 +22,7 @@
-
+
diff --git a/aspnet-core/templates/micro/content/migrations/PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore/ProjectNameDataSeeder.cs b/aspnet-core/templates/micro/content/migrations/PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore/ProjectNameDataSeeder.cs
new file mode 100644
index 000000000..262264cc9
--- /dev/null
+++ b/aspnet-core/templates/micro/content/migrations/PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore/ProjectNameDataSeeder.cs
@@ -0,0 +1,29 @@
+using Microsoft.Extensions.Logging;
+using Microsoft.Extensions.Logging.Abstractions;
+using System.Linq;
+using System.Threading.Tasks;
+using Volo.Abp.Data;
+using Volo.Abp.DependencyInjection;
+using Volo.Abp.MultiTenancy;
+
+namespace PackageName.CompanyName.ProjectName.EntityFrameworkCore;
+
+public class ProjectNameDataSeeder : ITransientDependency
+{
+ protected ILogger Logger { get; }
+ protected ICurrentTenant CurrentTenant { get; }
+
+ public ProjectNameDataSeeder(
+ ICurrentTenant currentTenant)
+ {
+ CurrentTenant = currentTenant;
+
+ Logger = NullLogger.Instance;
+ }
+
+ public virtual Task SeedAsync(DataSeedContext context)
+ {
+ // TODO: 此处执行你的数据种子
+ return Task.CompletedTask;
+ }
+}
diff --git a/aspnet-core/templates/micro/content/migrations/PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore/ProjectNameDbMigrationEventHandler.cs b/aspnet-core/templates/micro/content/migrations/PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore/ProjectNameDbMigrationEventHandler.cs
index 74a4a39bc..7d762133e 100644
--- a/aspnet-core/templates/micro/content/migrations/PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore/ProjectNameDbMigrationEventHandler.cs
+++ b/aspnet-core/templates/micro/content/migrations/PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore/ProjectNameDbMigrationEventHandler.cs
@@ -1,5 +1,4 @@
using Microsoft.Extensions.Logging;
-using System;
using System.Threading.Tasks;
using Volo.Abp.Data;
using Volo.Abp.DistributedLocking;
@@ -12,10 +11,10 @@ namespace PackageName.CompanyName.ProjectName.EntityFrameworkCore;
public class ProjectNameDbMigrationEventHandler : EfCoreDatabaseMigrationEventHandlerBase
{
- protected IDataSeeder DataSeeder { get; }
+ protected ProjectNameDataSeeder DataSeeder { get; }
public ProjectNameDbMigrationEventHandler(
- IDataSeeder dataSeeder,
+ ProjectNameDataSeeder dataSeeder,
ITenantStore tenantStore,
ICurrentTenant currentTenant,
IUnitOfWorkManager unitOfWorkManager,
@@ -29,8 +28,18 @@ public class ProjectNameDbMigrationEventHandler : EfCoreDatabaseMigrationEventHa
DataSeeder = dataSeeder;
}
- protected async override Task SeedAsync(Guid? tenantId)
+ protected async override Task AfterTenantCreated(TenantCreatedEto eventData, bool schemaMigrated)
{
- await DataSeeder.SeedAsync(tenantId);
+ // 新租户数据种子
+ var context = new DataSeedContext(eventData.Id);
+ if (eventData.Properties != null)
+ {
+ foreach (var property in eventData.Properties)
+ {
+ context.WithProperty(property.Key, property.Value);
+ }
+ }
+
+ await DataSeeder.SeedAsync(context);
}
}
diff --git a/aspnet-core/templates/micro/content/migrations/PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore/ProjectNameDbMigrationService.cs b/aspnet-core/templates/micro/content/migrations/PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore/ProjectNameDbMigrationService.cs
index 86343cf1d..8a2076966 100644
--- a/aspnet-core/templates/micro/content/migrations/PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore/ProjectNameDbMigrationService.cs
+++ b/aspnet-core/templates/micro/content/migrations/PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore/ProjectNameDbMigrationService.cs
@@ -1,9 +1,6 @@
using LINGYUN.Abp.Data.DbMigrator;
-using LINGYUN.Abp.Saas.Tenants;
using Microsoft.Extensions.Logging;
using System;
-using System.Collections.Generic;
-using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.Data;
using Volo.Abp.DependencyInjection;
@@ -16,14 +13,10 @@ namespace PackageName.CompanyName.ProjectName.EntityFrameworkCore;
public class ProjectNameDbMigrationService : EfCoreRuntimeDbMigratorBase, ITransientDependency
{
- protected IDataSeeder DataSeeder { get; }
- protected IDbSchemaMigrator DbSchemaMigrator { get; }
- protected ITenantRepository TenantRepository { get; }
+ protected ProjectNameDataSeeder DataSeeder { get; }
public ProjectNameDbMigrationService(
- IDataSeeder dataSeeder,
- IDbSchemaMigrator dbSchemaMigrator,
- ITenantRepository tenantRepository,
+ ProjectNameDataSeeder dataSeeder,
ICurrentTenant currentTenant,
IUnitOfWorkManager unitOfWorkManager,
IServiceProvider serviceProvider,
@@ -35,36 +28,11 @@ public class ProjectNameDbMigrationService : EfCoreRuntimeDbMigratorBase tenants;
-
- try
- {
- tenants = await TenantRepository.GetListAsync();
- }
- catch
- {
- return;
- }
-
-
- foreach (var tenant in tenants.Where(x => x.IsActive))
- {
- await LockAndApplyDatabaseWithTenantMigrationsAsync(tenant.Id);
- }
}
protected async override Task SeedAsync()
{
- Logger.LogInformation($"Executing {(!CurrentTenant.IsAvailable ? "host" : CurrentTenant.Name ?? CurrentTenant.GetId().ToString())} database seed...");
-
- await DataSeeder.SeedAsync(CurrentTenant.Id);
+ // DbMigrator迁移数据种子
+ await DataSeeder.SeedAsync(new DataSeedContext());
}
}
\ No newline at end of file
diff --git a/aspnet-core/templates/micro/content/migrations/PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore/ProjectNameDbMigratorEntityFrameworkCoreModule.cs b/aspnet-core/templates/micro/content/migrations/PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore/ProjectNameDbMigratorEntityFrameworkCoreModule.cs
index 823981a7f..4e45b22f5 100644
--- a/aspnet-core/templates/micro/content/migrations/PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore/ProjectNameDbMigratorEntityFrameworkCoreModule.cs
+++ b/aspnet-core/templates/micro/content/migrations/PackageName.CompanyName.ProjectName.DbMigrator.EntityFrameworkCore/ProjectNameDbMigratorEntityFrameworkCoreModule.cs
@@ -6,7 +6,9 @@ using Volo.Abp.Data;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.Modularity;
#if MySQL
-using Volo.Abp.EntityFrameworkCore.MySQL;
+// using Volo.Abp.EntityFrameworkCore.MySQL;
+using LINGYUN.Abp.EntityFrameworkCore.MySQL;
+using Microsoft.EntityFrameworkCore;
#elif SqlServer
using Volo.Abp.EntityFrameworkCore.SqlServer;
using Microsoft.EntityFrameworkCore.Infrastructure;
@@ -17,6 +19,7 @@ using Volo.Abp.EntityFrameworkCore.Oracle;
#elif OracleDevart
using Volo.Abp.EntityFrameworkCore.Oracle.Devart;
#elif PostgreSql
+using System;
using Volo.Abp.EntityFrameworkCore.PostgreSql;
#endif
@@ -27,7 +30,8 @@ namespace PackageName.CompanyName.ProjectName.EntityFrameworkCore;
typeof(ProjectNameEntityFrameworkCoreModule),
typeof(AbpSaasEntityFrameworkCoreModule),
#if MySQL
- typeof(AbpEntityFrameworkCoreMySQLPomeloModule),
+ // typeof(AbpEntityFrameworkCoreMySQLPomeloModule),
+ typeof(AbpEntityFrameworkCoreMySQLMicrotingModule),
#elif SqlServer
typeof(AbpEntityFrameworkCoreSqlServerModule),
#elif Sqlite
@@ -43,6 +47,13 @@ namespace PackageName.CompanyName.ProjectName.EntityFrameworkCore;
)]
public class ProjectNameDbMigratorEntityFrameworkCoreModule : AbpModule
{
+#if PostgreSql
+ public override void PreConfigureServices(ServiceConfigurationContext context)
+ {
+ // https://www.npgsql.org/efcore/release-notes/6.0.html#opting-out-of-the-new-timestamp-mapping-logic
+ AppContext.SetSwitch("Npgsql.EnableLegacyTimestampBehavior", true);
+ }
+#endif
public override void ConfigureServices(ServiceConfigurationContext context)
{
// 配置Ef
@@ -52,12 +63,12 @@ public class ProjectNameDbMigratorEntityFrameworkCoreModule : AbpModule
options.UseMySQL(mysql =>
{
// see: https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql/issues/1960
- mysql.TranslateParameterizedCollectionsToConstants();
+ mysql.UseParameterizedCollectionMode(ParameterTranslationMode.Constant);
});
options.UseMySQL(mysql =>
{
// see: https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql/issues/1960
- mysql.TranslateParameterizedCollectionsToConstants();
+ mysql.UseParameterizedCollectionMode(ParameterTranslationMode.Constant);
});
#elif SqlServer
options.UseSqlServer();
diff --git a/aspnet-core/templates/micro/content/migrations/PackageName.CompanyName.ProjectName.DbMigrator/appsettings.json b/aspnet-core/templates/micro/content/migrations/PackageName.CompanyName.ProjectName.DbMigrator/appsettings.json
index 331b315cc..4d72e2c6a 100644
--- a/aspnet-core/templates/micro/content/migrations/PackageName.CompanyName.ProjectName.DbMigrator/appsettings.json
+++ b/aspnet-core/templates/micro/content/migrations/PackageName.CompanyName.ProjectName.DbMigrator/appsettings.json
@@ -1,13 +1,6 @@
{
"ConnectionStrings": {
- "ProjectName": "Server=127.0.0.1;Database=ProjectName;User Id=root;Password=123456",
- "AbpSaas": "Server=127.0.0.1;Database=ProjectName;User Id=root;Password=123456",
- "AbpTenantManagement": "Server=127.0.0.1;Database=ProjectName;User Id=root;Password=123456",
- "AbpSettingManagement": "Server=127.0.0.1;Database=ProjectName;User Id=root;Password=123456",
- "AbpPermissionManagement": "Server=127.0.0.1;Database=ProjectName;User Id=root;Password=123456",
- "AbpFeatureManagement": "Server=127.0.0.1;Database=ProjectName;User Id=root;Password=123456",
- "AbpTextTemplating": "Server=127.0.0.1;Database=ProjectName;User Id=root;Password=123456",
- "AbpLocalizationManagement": "Server=127.0.0.1;Database=ProjectName;User Id=root;Password=123456"
+ "ProjectName": "Server=127.0.0.1;Database=ProjectName;User Id=root;Password=123456"
},
"DistributedLock": {
"IsEnabled": true,
diff --git a/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Application/PackageName/CompanyName/ProjectName/ProjectNameApplicationMapperProfile.cs b/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Application/PackageName/CompanyName/ProjectName/ProjectNameApplicationMapperProfile.cs
deleted file mode 100644
index 0ace9b456..000000000
--- a/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Application/PackageName/CompanyName/ProjectName/ProjectNameApplicationMapperProfile.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-using AutoMapper;
-
-namespace PackageName.CompanyName.ProjectName;
-
-public class ProjectNameApplicationMapperProfile : Profile
-{
- public ProjectNameApplicationMapperProfile()
- {
- }
-}
diff --git a/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Application/PackageName/CompanyName/ProjectName/ProjectNameApplicationMappers.cs b/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Application/PackageName/CompanyName/ProjectName/ProjectNameApplicationMappers.cs
new file mode 100644
index 000000000..33957dbb9
--- /dev/null
+++ b/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Application/PackageName/CompanyName/ProjectName/ProjectNameApplicationMappers.cs
@@ -0,0 +1,15 @@
+using Riok.Mapperly.Abstractions;
+using Volo.Abp.Mapperly;
+using Volo.Abp.ObjectExtending;
+
+namespace PackageName.CompanyName.ProjectName;
+
+// Mapper Exemple
+
+//[Mapper(RequiredMappingStrategy = RequiredMappingStrategy.Target)]
+//[MapExtraProperties(DefinitionChecks = MappingPropertyDefinitionChecks.None)]
+//public partial class EntityToEntityDtoMapper : MapperBase
+//{
+// public override partial DentityDto Map(Entity source);
+// public override partial void Map(Entity source, DentityDto destination);
+//}
diff --git a/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Application/PackageName/CompanyName/ProjectName/ProjectNameApplicationModule.cs b/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Application/PackageName/CompanyName/ProjectName/ProjectNameApplicationModule.cs
index 164310d8c..6af4fc0fe 100644
--- a/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Application/PackageName/CompanyName/ProjectName/ProjectNameApplicationModule.cs
+++ b/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Application/PackageName/CompanyName/ProjectName/ProjectNameApplicationModule.cs
@@ -3,7 +3,6 @@ using LINGYUN.Abp.Exporter;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Application;
using Volo.Abp.Authorization;
-using Volo.Abp.AutoMapper;
using Volo.Abp.Modularity;
namespace PackageName.CompanyName.ProjectName;
@@ -19,11 +18,6 @@ public class ProjectNameApplicationModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
- context.Services.AddAutoMapperObjectMapper();
-
- Configure(options =>
- {
- options.AddProfile(validate: true);
- });
+ context.Services.AddMapperlyObjectMapper();
}
}
diff --git a/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName.CompanyName.ProjectName.Domain.csproj b/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName.CompanyName.ProjectName.Domain.csproj
index b09e592a6..c98b69e4e 100644
--- a/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName.CompanyName.ProjectName.Domain.csproj
+++ b/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName.CompanyName.ProjectName.Domain.csproj
@@ -15,9 +15,9 @@
-
+
diff --git a/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/IProjectNameBasicRepository.cs b/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/IProjectNameBasicRepository.cs
index 290e09398..7b26a6577 100644
--- a/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/IProjectNameBasicRepository.cs
+++ b/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/IProjectNameBasicRepository.cs
@@ -1,17 +1,17 @@
-using LINGYUN.Abp.DataProtection;
-using System.Collections.Generic;
+using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Volo.Abp.Domain.Entities;
+using Volo.Abp.Domain.Repositories;
using Volo.Abp.Specifications;
namespace PackageName.CompanyName.ProjectName;
///
-/// 基本仓储接口
+/// 实体仓储接口
///
/// 实体类型
/// 实体主键类型
-public interface IProjectNameBasicRepository : IDataProtectionRepository
+public interface IProjectNameBasicRepository : IBasicRepository
where TEntity : class, IEntity
{
///
@@ -34,21 +34,8 @@ public interface IProjectNameBasicRepository : IDataProtectionRep
///
Task> GetListAsync(
ISpecification specification,
- string sorting = nameof(IEntity.Id),
+ 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/micro/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/IProjectNameDataProtectionRepository.cs b/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/IProjectNameDataProtectionRepository.cs
new file mode 100644
index 000000000..d59fdce60
--- /dev/null
+++ b/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/IProjectNameDataProtectionRepository.cs
@@ -0,0 +1,15 @@
+using LINGYUN.Abp.DataProtection;
+using Volo.Abp.Domain.Entities;
+
+namespace PackageName.CompanyName.ProjectName;
+///
+/// 受保护实体保护仓储接口
+///
+/// 实体类型
+/// 实体主键类型
+public interface IProjectNameDataProtectionRepository :
+ IProjectNameBasicRepository,
+ IDataProtectionRepository
+ where TEntity : class, IEntity
+{
+}
diff --git a/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/ProjectNameDataSeedContributor.cs b/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/ProjectNameDataSeedContributor.cs
deleted file mode 100644
index 4e70f3739..000000000
--- a/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/ProjectNameDataSeedContributor.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using Microsoft.Extensions.Logging;
-using System.Threading.Tasks;
-using Volo.Abp.Data;
-using Volo.Abp.DependencyInjection;
-
-namespace PackageName.CompanyName.ProjectName;
-
-public class ProjectNameDataSeedContributor : IDataSeedContributor, ITransientDependency
-{
- private readonly ILogger _logger;
- public ProjectNameDataSeedContributor(ILogger logger)
- {
- _logger = logger;
- }
-
- public Task SeedAsync(DataSeedContext context)
- {
- _logger.LogInformation("Write your data seed logic here.");
-
- return Task.CompletedTask;
- }
-}
diff --git a/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/ProjectNameDomainMapperProfile.cs b/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/ProjectNameDomainMapperProfile.cs
deleted file mode 100644
index 79c7af553..000000000
--- a/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/ProjectNameDomainMapperProfile.cs
+++ /dev/null
@@ -1,11 +0,0 @@
-using AutoMapper;
-
-namespace PackageName.CompanyName.ProjectName;
-
-public class ProjectNameDomainMapperProfile : Profile
-{
- public ProjectNameDomainMapperProfile()
- {
-
- }
-}
diff --git a/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/ProjectNameDomainMappers.cs b/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/ProjectNameDomainMappers.cs
new file mode 100644
index 000000000..b18d57ea8
--- /dev/null
+++ b/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/ProjectNameDomainMappers.cs
@@ -0,0 +1,16 @@
+using Riok.Mapperly.Abstractions;
+using Volo.Abp.Mapperly;
+using Volo.Abp.ObjectExtending;
+
+namespace PackageName.CompanyName.ProjectName;
+
+// Mapper Exemple
+
+//[Mapper(RequiredMappingStrategy = RequiredMappingStrategy.Target)]
+//[MapExtraProperties(DefinitionChecks = MappingPropertyDefinitionChecks.None)]
+//public partial class EntityToEntityEtoMapper : MapperBase
+//{
+// public override partial DentityEto Map(Entity source);
+// public override partial void Map(Entity source, DentityEto destination);
+//}
+
diff --git a/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/ProjectNameDomainModule.cs b/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/ProjectNameDomainModule.cs
index 2aca6020d..dc7883264 100644
--- a/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/ProjectNameDomainModule.cs
+++ b/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.Domain/PackageName/CompanyName/ProjectName/ProjectNameDomainModule.cs
@@ -1,14 +1,14 @@
using LINGYUN.Abp.DataProtection;
using Microsoft.Extensions.DependencyInjection;
-using Volo.Abp.AutoMapper;
using Volo.Abp.Domain.Entities.Events.Distributed;
+using Volo.Abp.Mapperly;
using Volo.Abp.Modularity;
using Volo.Abp.Threading;
namespace PackageName.CompanyName.ProjectName;
[DependsOn(
- typeof(AbpAutoMapperModule),
+ typeof(AbpMapperlyModule),
typeof(AbpDataProtectionModule),
typeof(ProjectNameDomainSharedModule))]
public class ProjectNameDomainModule : AbpModule
@@ -16,15 +16,13 @@ public class ProjectNameDomainModule : AbpModule
private static readonly OneTimeRunner OneTimeRunner = new();
public override void ConfigureServices(ServiceConfigurationContext context)
{
- context.Services.AddAutoMapperObjectMapper();
-
- Configure(options =>
- {
- options.AddProfile(validate: true);
- });
+ context.Services.AddMapperlyObjectMapper();
Configure(options =>
{
+ // options.AutoEventSelectors.Add();
+
+ // options.EtoMappings.Add();
});
}
diff --git a/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/EfCoreProjectNameBasicRepository.cs b/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/EfCoreProjectNameBasicRepository.cs
new file mode 100644
index 000000000..9b0d2cf92
--- /dev/null
+++ b/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/EfCoreProjectNameBasicRepository.cs
@@ -0,0 +1,57 @@
+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 EfCoreProjectNameBasicRepository :
+ EfCoreRepository,
+ IProjectNameBasicRepository
+ where TEntity : class, IEntity
+{
+ protected EfCoreProjectNameBasicRepository(
+ IDbContextProvider dbContextProvider)
+ : base(dbContextProvider)
+ {
+ }
+
+ public async virtual Task GetCountAsync(
+ ISpecification specification,
+ CancellationToken cancellationToken = default)
+ {
+ return await (await GetQueryableAsync())
+ .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 GetQueryableAsync())
+ .Where(specification.ToExpression())
+ .OrderBy(GetSortingOrDefault(sorting))
+ .PageBy(skipCount, 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/micro/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/EfCoreProjectNameRepository.cs b/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/EfCoreProjectNameDataProtectionRepository.cs
similarity index 73%
rename from aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/EfCoreProjectNameRepository.cs
rename to aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/EfCoreProjectNameDataProtectionRepository.cs
index 6ca9a0a89..bfdeb6aab 100644
--- a/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/EfCoreProjectNameRepository.cs
+++ b/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/EfCoreProjectNameDataProtectionRepository.cs
@@ -18,13 +18,13 @@ namespace PackageName.CompanyName.ProjectName.EntityFrameworkCore;
/// 实体类型
/// 实体主键类型
/// 实体数据权限类型/typeparam>
-public abstract class EfCoreProjectNameRepository :
+public abstract class EfCoreProjectNameDataProtectionRepository :
EfCoreDataProtectionRepository,
- IProjectNameBasicRepository
+ IProjectNameDataProtectionRepository
where TEntity : class, IEntity, IDataProtected
where TEntityAuth : DataAuthBase
{
- protected EfCoreProjectNameRepository(
+ protected EfCoreProjectNameDataProtectionRepository(
IDbContextProvider dbContextProvider,
IDataAuthorizationService dataAuthorizationService,
IEntityTypeFilterBuilder entityTypeFilterBuilder,
@@ -44,7 +44,7 @@ public abstract class EfCoreProjectNameRepository :
public async virtual Task> GetListAsync(
ISpecification specification,
- string sorting = nameof(IEntity.Id),
+ string? sorting = nameof(IEntity.Id),
int maxResultCount = 10,
int skipCount = 0,
CancellationToken cancellationToken = default)
@@ -56,20 +56,7 @@ public abstract class EfCoreProjectNameRepository :
.ToListAsync(GetCancellationToken(cancellationToken));
}
- public async virtual Task> GetListAsync(
- ISpecification specification,
- string sorting = nameof(IEntity.Id),
- int maxResultCount = 10,
- CancellationToken cancellationToken = default)
- {
- return await (await GetQueryableAsync())
- .Where(specification.ToExpression())
- .OrderBy(GetSortingOrDefault(sorting))
- .Take(maxResultCount)
- .ToListAsync(GetCancellationToken(cancellationToken));
- }
-
- protected virtual string GetSortingOrDefault(string sorting = nameof(IEntity.Id))
+ protected virtual string GetSortingOrDefault(string? sorting = nameof(IEntity.Id))
{
if (sorting.IsNullOrWhiteSpace())
{
diff --git a/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameEntityFrameworkCoreModule.cs b/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameEntityFrameworkCoreModule.cs
index 45a52fd3f..3e1b6a4b2 100644
--- a/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameEntityFrameworkCoreModule.cs
+++ b/aspnet-core/templates/micro/content/src/PackageName.CompanyName.ProjectName.EntityFrameworkCore/PackageName/CompanyName/ProjectName/EntityFrameworkCore/ProjectNameEntityFrameworkCoreModule.cs
@@ -1,5 +1,6 @@
using LINGYUN.Abp.DataProtection.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
+using Volo.Abp.EntityFrameworkCore.DependencyInjection;
using Volo.Abp.Modularity;
namespace PackageName.CompanyName.ProjectName.EntityFrameworkCore;
@@ -15,5 +16,14 @@ public class ProjectNameEntityFrameworkCoreModule : AbpModule
{
options.AddDefaultRepositories();
});
+
+ Configure(options =>
+ {
+ // Default Entity Details Func
+ //options.Entity(e =>
+ //{
+ // e.DefaultWithDetailsFunc = x => x;
+ //});
+ });
}
}
diff --git a/aspnet-core/templates/micro/content/tests/PackageName.CompanyName.ProjectName.Application.Tests/PackageName.CompanyName.ProjectName.Application.Tests.csproj b/aspnet-core/templates/micro/content/tests/PackageName.CompanyName.ProjectName.Application.Tests/PackageName.CompanyName.ProjectName.Application.Tests.csproj
index 31c55796f..a1ce5070d 100644
--- a/aspnet-core/templates/micro/content/tests/PackageName.CompanyName.ProjectName.Application.Tests/PackageName.CompanyName.ProjectName.Application.Tests.csproj
+++ b/aspnet-core/templates/micro/content/tests/PackageName.CompanyName.ProjectName.Application.Tests/PackageName.CompanyName.ProjectName.Application.Tests.csproj
@@ -1,18 +1,18 @@
-
- net10.0
-
- false
-
+
+ net10.0
+
+ false
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
diff --git a/aspnet-core/templates/micro/content/tests/PackageName.CompanyName.ProjectName.Domain.Tests/PackageName.CompanyName.ProjectName.Domain.Tests.csproj b/aspnet-core/templates/micro/content/tests/PackageName.CompanyName.ProjectName.Domain.Tests/PackageName.CompanyName.ProjectName.Domain.Tests.csproj
index 3ab8047d1..0cec08c93 100644
--- a/aspnet-core/templates/micro/content/tests/PackageName.CompanyName.ProjectName.Domain.Tests/PackageName.CompanyName.ProjectName.Domain.Tests.csproj
+++ b/aspnet-core/templates/micro/content/tests/PackageName.CompanyName.ProjectName.Domain.Tests/PackageName.CompanyName.ProjectName.Domain.Tests.csproj
@@ -1,18 +1,18 @@
-
- net10.0
-
- false
-
+
+ net10.0
+
+ false
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
diff --git a/aspnet-core/templates/micro/content/tests/PackageName.CompanyName.ProjectName.TestBase/PackageName.CompanyName.ProjectName.TestBase.csproj b/aspnet-core/templates/micro/content/tests/PackageName.CompanyName.ProjectName.TestBase/PackageName.CompanyName.ProjectName.TestBase.csproj
index af08cb5ca..1ab84ca53 100644
--- a/aspnet-core/templates/micro/content/tests/PackageName.CompanyName.ProjectName.TestBase/PackageName.CompanyName.ProjectName.TestBase.csproj
+++ b/aspnet-core/templates/micro/content/tests/PackageName.CompanyName.ProjectName.TestBase/PackageName.CompanyName.ProjectName.TestBase.csproj
@@ -1,23 +1,23 @@
-
- net10.0
-
- false
-
+
+ net10.0
+
+ false
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+