From 97113c38c6b4acb7d06ba498a2942fd101125d7f Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周二, 06 5月 2025 06:57:21 +0800
Subject: [PATCH] 2222
---
Weben_CMS专用代码生成器/Code/Templete/EntityFrameworkCore/EfCoreRepository模板.txt | 113 ++++++++++++++++++++++
Weben_CMS专用代码生成器/Code/Generate/Domain/IRepository_Generate.cs | 27 +++++
Weben_CMS专用代码生成器/Code/MainForm.cs | 21 ++++
Weben_CMS专用代码生成器/Code/Generate/EntityFrameworkCore/EfCoreRepository_Generate.cs | 27 +++++
Weben_CMS专用代码生成器/Code/Templete/Domain/IRepository模板.txt | 53 ++++++++++
Weben_CMS专用代码生成器/Code/Templete/AppService/AppService模板.txt | 4
Weben_CMS专用代码生成器/Code/GenerateCode_WeiBen_CMS.csproj | 8 +
7 files changed, 251 insertions(+), 2 deletions(-)
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Generate/Domain/IRepository_Generate.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Generate/Domain/IRepository_Generate.cs"
new file mode 100644
index 0000000..04ae3ff
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Generate/Domain/IRepository_Generate.cs"
@@ -0,0 +1,27 @@
+锘�
+
+using GenerateCode_WeiBen_WMS.Model;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace GenerateCode_GEBrilliantFactory
+{
+ /// <summary>
+ /// 鐢熸垚鏌ヨ瀹炰綋绫�
+ /// </summary>
+ public class IRepository_Generate : BaseGenerate
+ {
+ public static string CreateText(GenerateCodeParam param)
+ {
+ var str = TextHelper.ReadText(@"Templete\Domain\IRepository妯℃澘.txt");
+ CommonReplace(ref str);
+
+ CommonHelper.CommonReplaceStr(param, ref str);
+
+
+ return str;
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Generate/EntityFrameworkCore/EfCoreRepository_Generate.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Generate/EntityFrameworkCore/EfCoreRepository_Generate.cs"
new file mode 100644
index 0000000..1c198b7
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Generate/EntityFrameworkCore/EfCoreRepository_Generate.cs"
@@ -0,0 +1,27 @@
+锘�
+
+using GenerateCode_WeiBen_WMS.Model;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace GenerateCode_GEBrilliantFactory
+{
+ /// <summary>
+ /// 鐢熸垚鏌ヨ瀹炰綋绫�
+ /// </summary>
+ public class EfCoreRepository_Generate : BaseGenerate
+ {
+ public static string CreateText(GenerateCodeParam param)
+ {
+ var str = TextHelper.ReadText(@"Templete\EntityFrameworkCore\EfCoreRepository妯℃澘.txt");
+ CommonReplace(ref str);
+
+ CommonHelper.CommonReplaceStr(param, ref str);
+
+
+ return str;
+ }
+ }
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/GenerateCode_WeiBen_CMS.csproj" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/GenerateCode_WeiBen_CMS.csproj"
index 9d31ff0..5ae5d62 100644
--- "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/GenerateCode_WeiBen_CMS.csproj"
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/GenerateCode_WeiBen_CMS.csproj"
@@ -110,6 +110,8 @@
<Compile Include="Generate\AppService\IAppService_Generate.cs" />
<Compile Include="Generate\BaseGenerate.cs" />
<Compile Include="Generate\Controller\Controller_Generate.cs" />
+ <Compile Include="Generate\Domain\IRepository_Generate.cs" />
+ <Compile Include="Generate\EntityFrameworkCore\EfCoreRepository_Generate.cs" />
<Compile Include="Generate\Entity\ImportModel_Generate.cs" />
<Compile Include="Generate\Entity\ExportModel_Generate.cs" />
<Compile Include="Generate\Entity\Dto_Generate.cs" />
@@ -201,6 +203,12 @@
<Content Include="Templete\Controller妯℃澘.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
+ <Content Include="Templete\Domain\IRepository妯℃澘.txt">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </Content>
+ <Content Include="Templete\EntityFrameworkCore\EfCoreRepository妯℃澘.txt">
+ <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+ </Content>
<Content Include="Templete\Entity\AddModel妯℃澘.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/MainForm.cs" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/MainForm.cs"
index 0c4b085..22b30fa 100644
--- "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/MainForm.cs"
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/MainForm.cs"
@@ -245,6 +245,27 @@
#endregion
+ #region Domain
+
+ //11銆佺敓鎴� IRepository 鏂囦欢
+ var iRepositoryPath = tbPath.Text + @"\server\src\CMS.Plugin." + tb_WCF_NameSpacePath.Text.Trim() + @".Domain\" + tb_EntityName.Text.Trim(); ;
+ str_generate = IRepository_Generate.CreateText(param);
+ tf = TextHelper.Export2File_V2(iRepositoryPath, $"I{param.EntityName}Repository.cs", tableName, str_generate, FileType.InputModel, filePrefixName, entityName, modulelogo);
+
+
+ #endregion
+
+ #region EntityFrameworkCore
+
+ //12銆佺敓鎴� EfCoreRepository 鏂囦欢
+ var efCoreRepositoryPath = tbPath.Text + @"\server\src\CMS.Plugin." + tb_WCF_NameSpacePath.Text.Trim() + @".EntityFrameworkCore\Repositories";
+ str_generate = EfCoreRepository_Generate.CreateText(param);
+ tf = TextHelper.Export2File_V2(efCoreRepositoryPath, $"EfCore{param.EntityName}Repository.cs", tableName, str_generate, FileType.InputModel, filePrefixName, entityName, modulelogo);
+
+
+ #endregion
+
+
////鐢熸垚 OutputModel 鏂囦欢
//str_generate = OutputModel_Generate.CreateQueryModelLText(modulelogo, chinaComment, columnList, entityName);
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/AppService/AppService\346\250\241\346\235\277.txt" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/AppService/AppService\346\250\241\346\235\277.txt"
index 46c7fb2..35d7019 100644
--- "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/AppService/AppService\346\250\241\346\235\277.txt"
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/AppService/AppService\346\250\241\346\235\277.txt"
@@ -2,8 +2,8 @@
using CMS.Plugin.$NameSpacePath$.Application.Contracts.Services;
using CMS.Plugin.$NameSpacePath$.Domain.Shared;
using CMS.Plugin.$NameSpacePath$.Domain.Shared.Util;
-using CMS.Plugin.$NameSpacePath$.Domain.Shared.$EntityInstanceName$s;
-using CMS.Plugin.$NameSpacePath$.Domain.$EntityInstanceName$s;
+using CMS.Plugin.$NameSpacePath$.Domain.Shared.$EntityName$;
+using CMS.Plugin.$NameSpacePath$.Domain.$EntityName$;
using CmsQueryExtensions.Extension;
using System.Linq.Expressions;
using Volo.Abp;
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/Domain/IRepository\346\250\241\346\235\277.txt" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/Domain/IRepository\346\250\241\346\235\277.txt"
new file mode 100644
index 0000000..9ec6318
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/Domain/IRepository\346\250\241\346\235\277.txt"
@@ -0,0 +1,53 @@
+using CmsQueryExtensions.Extension;
+using System.Linq.Expressions;
+using Volo.Abp.Domain.Repositories;
+
+namespace CMS.Plugin.$NameSpacePath$.Domain.$EntityName$;
+
+/// <summary>
+/// $ChinaComment$仓储
+/// </summary>
+public interface I$EntityName$Repository : IBasicRepository<$EntityName$, Guid>
+{
+ /// <summary>
+ /// 按照名称查找$ChinaComment$
+ /// </summary>
+ /// <param name="name"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ Task<$EntityName$> FindByNameAsync(string name, CancellationToken cancellationToken = default);
+
+ /// <summary>
+ /// 验证名称是否存在$ChinaComment$
+ /// </summary>
+ /// <param name="name"></param>
+ /// <param name="id"></param>
+ /// <returns></returns>
+ Task<bool> NameExistAsync(string name, Guid? id = null);
+
+ /// <summary>
+ /// 获取最大排序$ChinaComment$
+ /// </summary>
+ /// <returns></returns>
+ Task<int> GetMaxSortAsync();
+
+ /// <summary>
+ /// 获取分页列表$ChinaComment$
+ /// </summary>
+ /// <param name="whereConditions"></param>
+ /// <param name="sorting"></param>
+ /// <param name="maxResultCount"></param>
+ /// <param name="skipCount"></param>
+ /// <param name="includeDetails"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ Task<List<$EntityName$>> GetListAsync(FunReturnResultModel<Expression<Func<$EntityName$, bool>>> whereConditions, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, bool includeDetails = false, CancellationToken cancellationToken = default);
+
+ /// <summary>
+ /// 获取总数$ChinaComment$
+ /// </summary>
+ /// <param name="whereConditions"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ Task<long> GetCountAsync(FunReturnResultModel<Expression<Func<$EntityName$, bool>>> whereConditions, CancellationToken cancellationToken = default);
+}
diff --git "a/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/EntityFrameworkCore/EfCoreRepository\346\250\241\346\235\277.txt" "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/EntityFrameworkCore/EfCoreRepository\346\250\241\346\235\277.txt"
new file mode 100644
index 0000000..c355d6a
--- /dev/null
+++ "b/Weben_CMS\344\270\223\347\224\250\344\273\243\347\240\201\347\224\237\346\210\220\345\231\250/Code/Templete/EntityFrameworkCore/EfCoreRepository\346\250\241\346\235\277.txt"
@@ -0,0 +1,113 @@
+using CMS.Plugin.$NameSpacePath$.Domain.$EntityName$;
+using CMS.Plugin.$NameSpacePath$.EntityFrameworkCore.Extensions;
+using CmsQueryExtensions.Extension;
+using Microsoft.EntityFrameworkCore;
+using System.Linq.Dynamic.Core;
+using System.Linq.Expressions;
+using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
+using Volo.Abp.EntityFrameworkCore;
+
+
+namespace CMS.Plugin.$NameSpacePath$.EntityFrameworkCore.Repositories;
+
+/// <summary>
+/// $ChinaComment$仓储实现
+/// </summary>
+public class EfCore$EntityName$Repository : EfCoreRepository<ICMSPluginDbContext, $EntityName$, Guid>, I$EntityName$Repository
+{
+ /// <summary>
+ /// Initializes a new instance of the <see cref="EfCore$EntityName$Repository"/> class.
+ /// </summary>
+ /// <param name="dbContextProvider">The database context provider.</param>
+ public EfCore$EntityName$Repository(IDbContextProvider<ICMSPluginDbContext> dbContextProvider)
+ : base(dbContextProvider)
+ {
+ }
+
+ /// <summary>
+ /// 按照名称查找$ChinaComment$
+ /// </summary>
+ /// <param name="name"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ public virtual async Task<$EntityName$> FindByNameAsync(string name, CancellationToken cancellationToken = default)
+ {
+ return await (await GetDbSetAsync())
+ .IncludeDetails()
+ .Where(x => !x.IsDeleted)
+ .OrderBy(t => t.Sort)
+ .FirstOrDefaultAsync(t => t.MaterialCode == name, GetCancellationToken(cancellationToken));
+ }
+
+ /// <summary>
+ /// 验证名称是否存在$ChinaComment$
+ /// </summary>
+ /// <param name="materialCode"></param>
+ /// <param name="id"></param>
+ /// <returns></returns>
+ public async Task<bool> NameExistAsync(string materialCode, Guid? id = null)
+ {
+ return await (await GetDbSetAsync()).WhereIf(id.HasValue, p => p.Id != id).Where(x => !x.IsDeleted).AnyAsync(x => x.MaterialCode == materialCode);
+ }
+
+ /// <summary>
+ /// 获取最大排序$ChinaComment$
+ /// </summary>
+ /// <returns></returns>
+ public async Task<int> GetMaxSortAsync()
+ {
+ var hasAny = await (await GetQueryableAsync())
+ .Where(x => !x.IsDeleted).AnyAsync();
+ if (!hasAny)
+ {
+ return 1;
+ }
+
+ var sort = await (await GetQueryableAsync())
+ .Where(x => !x.IsDeleted).MaxAsync(x => x.Sort);
+ return sort + 1;
+ }
+
+ /// <summary>
+ /// 获取分页列表$ChinaComment$
+ /// </summary>
+ /// <param name="whereConditions"></param>
+ /// <param name="sorting"></param>
+ /// <param name="maxResultCount"></param>
+ /// <param name="skipCount"></param>
+ /// <param name="includeDetails"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ public async Task<List<$EntityName$>> GetListAsync(FunReturnResultModel<Expression<Func<$EntityName$, bool>>> whereConditions, string sorting = null, int maxResultCount = int.MaxValue, int skipCount = 0, bool includeDetails = false, CancellationToken cancellationToken = default)
+ {
+ return await (await GetDbSetAsync())
+ .IncludeDetails(includeDetails)
+ .WhereIf(whereConditions != null, whereConditions.data)
+ .Where(x => !x.IsDeleted)
+ .OrderBy(sorting.IsNullOrEmpty() ? nameof($EntityName$.Sort) : sorting)
+ .PageBy(skipCount, maxResultCount)
+ .ToListAsync(GetCancellationToken(cancellationToken));
+ }
+
+ /// <summary>
+ /// 获取总数$ChinaComment$
+ /// </summary>
+ /// <param name="whereConditions"></param>
+ /// <param name="cancellationToken"></param>
+ /// <returns></returns>
+ public async Task<long> GetCountAsync(FunReturnResultModel<Expression<Func<$EntityName$, bool>>> whereConditions, CancellationToken cancellationToken = default)
+ {
+ return await (await GetQueryableAsync())
+ .WhereIf(whereConditions != null, whereConditions.data)
+ .Where(x => !x.IsDeleted)
+ .CountAsync(cancellationToken: GetCancellationToken(cancellationToken));
+ }
+
+
+ /// <inheritdoc />
+ public override async Task<IQueryable<$EntityName$>> WithDetailsAsync()
+ {
+ return (await GetQueryableAsync())
+ .Where(x => !x.IsDeleted).IncludeDetails();
+ }
+}
--
Gitblit v1.9.3