# partybuilding-api **Repository Path**: ranluweb/partybuilding-api ## Basic Information - **Project Name**: partybuilding-api - **Description**: No description available - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-08 - **Last Updated**: 2025-03-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 使用必读 本应用程序采用最新的 .Net 7.0 开发的WebAPI接口项目;项目采用仓储(Repository)+工作单元(UnitOfWork)模式; 它主要在领域层和持久层的提供数据抽象层,是一种数据访问模式,屏蔽底层的存储细节; (如:crud的sql详细信息,将这些sql写在另一个类中,以此屏蔽存储细节sql),让我们更关注领域层逻辑(业务逻辑在领域层中)。 在WebApi中,我们对资源的CRUD即(增删改查)操作都是通过相应的Http方法来实现,应该按规定应用对应的方法如: Post:(新增)用于添加数据; Put:(修改)用于更新某个资源较完整的内容,如用户要重填完整表单更新所有信息,后台处理更新时可能只是保留内部记录 ID 不变; Patch:(修改)用于资源的部分内容的更新,如更新某一个或几个字段不对表进行全部字段更新; Delete:(删除)用于删除数据; Get:(查询)用于查询数据; 对于更加详细的数据库操作请参考 CoreRms.Net.Repository 类库下的 BaseRepository 仓储实现基类, 对于现有实现不能满足业务时可自行对仓储基类进行扩充,基类采用泛型实现。 异步编程,在对资源的CRUD操作上尽量使用异步方法 使用异步的目的是用尽量少的线程保证相同的并发量 并行任务(Task)以及基于Task的异步编程,异步方法应在方法名后面增加Async作为标识 其他要求: 每个方法及参数都必须要写注释,注明方法的用途和参数的含义; ## 技术选型 技术|名称|版本 --|--|-- Asp.net Core WebApi|应用框架|保持最新 Entity Framework|ORM框架|保持最新 Z.EntityFramework.Plus.EFCore|提高EF性能插件|保持最新 AutoFac|IOC框架|保持最新 Serilog|日志框架|保持最新 AutoMapper|实体映射|保持最新 Swagger2|Api文档|保持最新 JWT|用户鉴权|保持最新 ClientRateLimiting|客户端级限流|保持最新 JPush|消息推送|保持最新 ## 开发环境 * Visual Studio 2022 17.1 + * NET 7 SDK + * SQL Server Management Studio ## 项目架构 >1.Core --核心层 >>CoreRms.Net.Core --核心封装 >>>AutoFac 依赖注入框架 >>>Configuration 资源配置 >>>Enum 系统常用枚举类 >>>Helper 一些常用的帮助类 >>>Mapping 对象映射器 >>> >2.Entity --实体层,实体代表业务领域的数据和操作 >>CoreRms.Net.Model 模型 >>>Business 业务逻辑实体存放 >>>Context EF中的上下文 >>>Entities 实体,对应数据库 >>>FromBody 参数值应该从Body请求的实体 >>>ViewModels 返回数据的实体 >>> >3.Services --领域服务层,当处理的业务规则跨越两个(及以上)实体时,应该写在领域服务方法里面 >>NeccGov.Net.IServices 领域服务接口层 >>NeccGov.Net.Services 领域服务实现层 >>> >4.Repository --基础设施层,用来操作数据库进行数据存取。 >>NeccGov.Net.IRepository 仓储接口层 >>NeccGov.Net.Repository 仓储实现层 >> >5.App 应用服务层 >>NeccGov.Net.Web.WebApi 主接口层