# MiniTemplate **Repository Path**: dingshuanglei/mini-template ## Basic Information - **Project Name**: MiniTemplate - **Description**: MiniTemplate - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-02 - **Last Updated**: 2026-05-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MiniTemplate - .NET API 项目生成器 一个命令行工具,用于快速生成具有 DDD(领域驱动设计)架构和审计日志功能的 .NET API 项目。 ## 🚀 功能特性 - **DDD 架构** - 六层架构设计(Api、Domain、Application、Infrastructure、EntityFrameworkCore、DbMigrator) - **审计日志** - 自动记录所有操作和请求 - **Repository 基类** - 内置完整的 CRUD 操作(增删查改)和分页查询功能 - **Service 基类** - 封装业务逻辑基类,继承即可获得完整 CRUD 能力 - **BaseApiController** - REST API 控制器基类,自动提供标准 CRUD 接口 - **可配置特性** - 按需选择需要的功能组件 - **多种数据库支持** - SQLite、PostgreSQL、SQL Server、MySQL、MongoDB - **多种缓存支持** - MemoryCache、Redis、MongoDB - **现代化技术栈** - .NET 8、EF Core、MediatR、AutoMapper - **完整测试套件** - 自动生成单元测试和集成测试 - **数据库迁移工具** - 独立的 DbMigrator 项目,简化数据库更新流程 - **EF Core 配置分离** - EntityFrameworkCore 项目专门存放 EF Core 配置 - **继承式开发** - Repository、Service、Controller 基类,快速开发业务功能 - **现代化 CLI** - 使用 System.CommandLine,提供更好的用户体验 ## 📁 项目结构 ``` MiniTemplate/ ├── src/ │ └── MiniTemplate/ # 主项目 │ ├── Commands/ # 命令行命令 │ ├── Core/ # 核心模板生成器 │ ├── Models/ # 数据模型 │ └── Program.cs # 入口文件 ├── tests/ # 测试项目 │ └── MiniTemplate.Tests/ # 单元测试 ├── README.md └── MiniTemplate.slnx # 解决方案文件 ``` ## 🔧 安装与使用 ### 构建项目 ```bash cd MiniTemplate dotnet build ``` ### 创建新项目 ```bash # 交互模式 cd src/MiniTemplate dotnet run # 交互模式(带参数 dotnet run -- create api -n YourProjectName -o "../YourPath" # 非交互模式(使用默认配置) dotnet run -- create api -n YourProjectName -o "../YourPath" -y # 非交互模式(指定配置) dotnet run -- create api -n YourProjectName -o "../YourPath" \ -db PostgreSQL \ -cache Redis \ --id-type long \ -y ``` ### 添加实体 ```bash # 向现有项目添加实体 dotnet run -- add entity -e Product -p "../YourProject" ``` ## 📦 生成的项目结构 使用 MiniTemplate 生成的 DDD 项目结构如下: ``` YourProject/ ├── src/ │ ├── YourProject.Api/ # API 层 │ │ ├── Controllers/ # API 控制器 │ │ │ └── BaseApiController.cs # ⭐控制器基类 │ │ ├── Middleware/ # 中间件(审计日志) │ │ ├── Filters/ # 过滤器(全局异常处理) │ │ ├── Program.cs # 应用入口 │ │ └── appsettings.json # 配置文件 │ ├── YourProject.Domain/ # 领域层 │ │ ├── Common/ # 通用基类 │ │ ├── Entities/ # 实体类 │ │ ├── ValueObjects/ # 值对象 │ │ ├── Aggregates/ # 聚合根 │ │ └── Interfaces/ # 仓储接口 │ │ └── IRepository.cs # ⭐仓储接口基类 │ ├── YourProject.Application/ # 应用层 │ │ ├── Services/ # 应用服务 │ │ │ └── BaseService.cs # ⭐服务基类 │ │ ├── DTOs/ # 数据传输对象 │ │ ├── Interfaces/ # 服务接口 │ │ │ └── IBaseService.cs # ⭐服务接口基类 │ │ ├── Behaviors/ # MediatR 行为 │ │ └── Mapping/ # AutoMapper 配置 │ ├── YourProject.Infrastructure/ # 基础设施层 │ │ ├── Data/ # EF Core DbContext │ │ ├── Repositories/ # 仓储实现 │ │ │ └── Repository.cs # ⭐仓储基类 │ │ ├── Audit/ # 审计日志服务 │ │ └── Logging/ # 日志服务 │ ├── YourProject.EntityFrameworkCore/ # EF Core 配置层 ⭐新增 │ │ └── Configurations/ # EF Core 实体配置 │ └── YourProject.DbMigrator/ # 数据库迁移工具 ⭐新增 │ ├── Program.cs # 迁移程序入口 │ └── appsettings.json # 迁移配置 ├── tests/ # 测试项目 │ ├── YourProject.Domain.Tests/ # 领域层测试 │ ├── YourProject.Application.Tests/ # 应用层测试 │ ├── YourProject.Infrastructure.Tests/# 基础设施层测试 │ ├── YourProject.Api.Tests/ # API 层测试 │ ├── YourProject.EntityFrameworkCore.Tests/ # EF Core 配置测试 ⭐新增 │ └── YourProject.DbMigrator.Tests/ # DbMigrator 测试 ⭐新增 ├── docker-compose.yml # Docker Compose 配置 ├── Dockerfile # Dockerfile └── YourProject.slnx # 解决方案文件 ``` ### 项目层级说明 - **Api 层** - 完整 API 功能(控制器、中间件、过滤器、配置) - **Domain 层** - 领域模型、业务规则、领域事件 - **Application 层** - 用例编排、业务逻辑、DTO 转换 - **Infrastructure 层** - 技术实现(数据库、缓存、日志) - **EntityFrameworkCore 层** - EF Core 实体配置、类型配置 - **DbMigrator 层** - 数据库迁移工具、种子数据初始化 ### 🎯 基类功能说明 #### Repository 基类 (`Repository`) 内置完整的 CRUD 操作和分页查询功能,继承即可使用: - `GetByIdAsync(id)` - 根据 ID 获取实体 - `GetAllAsync()` - 获取所有实体 - `GetListAsync(predicate, orderBy)` - 根据条件查询列表 - `GetPageAsync(pageIndex, pageSize, predicate, orderBy)` - 分页查询 - `AddAsync(entity)` - 添加实体 - `UpdateAsync(entity)` - 更新实体 - `DeleteAsync(entity)` - 删除实体 #### Service 基类 (`BaseService`) 封装业务逻辑基类,继承即可获得完整 CRUD 能力: - 封装 Repository 操作 - 提供标准的业务方法接口 - 支持自定义业务逻辑扩展 #### BaseApiController (`BaseApiController`) REST API 控制器基类,自动提供标准 CRUD 接口: - `GET /api/{controller}` - 获取所有 - `GET /api/{controller}/list` - 条件查询列表 - `GET /api/{controller}/page?pageIndex=1&pageSize=10` - 分页查询 - `GET /api/{controller}/{id}` - 根据 ID 获取 - `POST /api/{controller}` - 创建实体 - `PUT /api/{controller}` - 更新实体 - `DELETE /api/{controller}/{id}` - 删除实体 ### 🚀 快速开始 - 使用基类开发 #### 1. 创建实体 (Domain 层) ```csharp // src/YourProject.Domain/Entities/Product.cs public class Product : BaseEntity { public string Name { get; set; } = string.Empty; public decimal Price { get; set; } public string? Description { get; set; } } ``` #### 2. 创建自定义 Repository (可选) ```csharp // src/YourProject.Infrastructure/Repositories/ProductRepository.cs public class ProductRepository : Repository, IProductRepository { public ProductRepository(ApplicationDbContext context) : base(context) { } // 添加自定义查询方法 public async Task> GetByPriceRangeAsync( decimal minPrice, decimal maxPrice, CancellationToken cancellationToken) { return await _dbSet .Where(p => p.Price >= minPrice && p.Price <= maxPrice) .ToListAsync(cancellationToken); } } ``` #### 3. 创建自定义 Service (可选) ```csharp // src/YourProject.Application/Services/ProductService.cs public class ProductService : BaseService, IProductService { private readonly IProductRepository _repository; public ProductService(IProductRepository repository) : base(repository) { _repository = repository; } // 扩展自定义业务方法 public async Task> GetByPriceRangeAsync( decimal minPrice, decimal maxPrice, CancellationToken cancellationToken) { return await _repository.GetByPriceRangeAsync(minPrice, maxPrice, cancellationToken); } } ``` #### 4. 创建 Controller (继承基类) ```csharp // src/YourProject.Api/Controllers/ProductsController.cs public class ProductsController : BaseApiController { private readonly IProductService _productService; public ProductsController(IProductService productService) : base(productService) { _productService = productService; } // 继承自动获得完整 CRUD 接口 // 可以扩展自定义接口 [HttpGet("price-range")] public async Task>> GetByPriceRange( [FromQuery] decimal minPrice, [FromQuery] decimal maxPrice, CancellationToken cancellationToken) { var products = await _productService.GetByPriceRangeAsync(minPrice, maxPrice, cancellationToken); return Ok(products); } } ``` ## 🔧 配置说明 ### 数据库连接 生成的项目默认使用 PostgreSQL,配置文件位于 `src/YourProject.Api/appsettings.json`: ```json { "ConnectionStrings": { "Default": "Host=localhost;Database=yourproject_db;Username=postgres;Password=postgres" } } ``` ### 运行数据库迁移 ```bash cd YourProject dotnet run --project src/YourProject.DbMigrator ``` ### 启动项目 ```bash cd YourProject dotnet restore dotnet build dotnet run --project src/YourProject.Api ``` ### 运行测试 ```bash cd YourProject dotnet test ``` ### 📋 业务实体示例 生成的项目包含完整的业务实体示例,展示了实际业务场景中的应用: | 实体 | 说明 | 关联实体 | |------|------|---------| | **PurchaseOrder** | 采购订单 | VendorShipment, OrderItem | | **SalesOrder** | 销售订单 | WarehouseReceipt, OrderItem | | **GoodsReceipt** | 入库单 | PurchaseOrder | | **VendorShipment** | 供应商发货单 | PurchaseOrder | | **WarehouseReceipt** | 仓单/出货单 | SalesOrder | | **OrderItem** | 订单明细 | PurchaseOrder, SalesOrder | **关系说明:** - 采购订单 (PurchaseOrder) 由供应商发货 (VendorShipment),收货后生成入库单 (GoodsReceipt) - 销售订单 (SalesOrder) 出货后生成仓单 (WarehouseReceipt) - 订单明细 (OrderItem) 关联采购订单和销售订单 ## 📋 命令行选项 ### create api 命令 | 选项 | 描述 | 默认值 | |------|------|--------| | `-n, --name` | 项目名称 | 可选 | | `-o, --output` | 输出目录 | 当前目录 | | `-db, --database` | 数据库类型 (SQLite/PostgreSQL/SQLServer/MySQL) | SQLite | | `-cache, --nosql` | NoSQL缓存提供商 (MemoryCache/Redis/MongoDB) | MemoryCache | | `--id-type` | 实体ID类型 (long/int/Guid) | long | | `-y, --non-interactive` | 非交互模式,使用默认配置 | false | | `-h, --help` | 显示帮助信息 | - | ### add entity 命令 | 选项 | 描述 | 默认值 | |------|------|--------| | `-e, --entity` | 实体名称 | 必需 | | `-p, --path` | 项目路径 | 必需 | ### 查看帮助 ```bash # 查看全局帮助 dotnet run -- --help # 查看 create api 命令帮助 dotnet run -- create api --help # 查看 add entity 命令帮助 dotnet run -- add entity --help ``` ## 🛠️ 技术栈 - **框架**: .NET 8.0 - **ORM**: Entity Framework Core 8.0 - **数据库**: PostgreSQL, SQL Server, MySQL, MongoDB - **API文档**: Swagger / OpenAPI - **验证**: FluentValidation - **中间件**: MediatR - **对象映射**: AutoMapper - **测试**: xUnit, Moq, FluentAssertions - **缓存**: Redis (StackExchange.Redis) - **迁移工具**: EF Core Migrations ## 📄 许可证 本项目采用 MIT 许可证。