HZY.Framework.Repository.EntityFramework
10.1.18
dotnet add package HZY.Framework.Repository.EntityFramework --version 10.1.18
NuGet\Install-Package HZY.Framework.Repository.EntityFramework -Version 10.1.18
<PackageReference Include="HZY.Framework.Repository.EntityFramework" Version="10.1.18" />
<PackageVersion Include="HZY.Framework.Repository.EntityFramework" Version="10.1.18" />
<PackageReference Include="HZY.Framework.Repository.EntityFramework" />
paket add HZY.Framework.Repository.EntityFramework --version 10.1.18
#r "nuget: HZY.Framework.Repository.EntityFramework, 10.1.18"
#:package HZY.Framework.Repository.EntityFramework@10.1.18
#addin nuget:?package=HZY.Framework.Repository.EntityFramework&version=10.1.18
#tool nuget:?package=HZY.Framework.Repository.EntityFramework&version=10.1.18
HZY.Framework
模块化 .NET 10 插件框架:AOP、依赖注入、EF Core 仓储、动态 API 控制器、定时任务、Redis、服务器监控。
- 源码与完整文档:https://gitee.com/hzy6/HZY.Framework
- 完整实战案例(HzyAdmin 后台管理系统):https://gitee.com/hzy6/HzyAdmin
包清单
| 包 | 说明 |
|---|---|
HZY.Framework.Aop |
AOP 拦截器基类(Rougamo 编译期静态织入,无动态代理、无性能损耗) |
HZY.Framework.Core |
核心主干:AOP、DI 特性注册、启动模块、定时任务、Redis、服务器指标监控 |
HZY.Framework.Repository.EntityFramework |
EF Core 泛型仓储:软删除、审计字段、雪花 ID、分表、字段加密、事务、批量操作 |
HZY.Framework.Repository.EntityFramework.{SqlServer/MySql/PostgreSql/Oracle/Sqlite} |
数据库 Provider(按需选装) |
HZY.Framework.Repository.EntityFramework.All |
全部数据库 Provider 聚合包 |
HZY.Framework.DynamicApiController |
服务类自动映射为 HTTP API 控制器 |
快速开始
// 1. 定义启动模块(可组合多个模块,按 Order 排序执行)
[ImportStartupModule(typeof(RepositoryStartupModule))]
public class AppStartup : StartupModule<AppStartup>
{
public override void ConfigureServices(WebApplicationBuilder builder)
{
// 动态 API 控制器:实现 IDynamicApiController 的服务自动注册为控制器
builder.Services.AddControllers().AddDynamicApiController();
// 扫描 [Component] 特性自动注册服务
builder.Services.AddDependencyInjectionByComponent([typeof(Program).Assembly]);
}
}
// 2. Program.cs —— 一行启动
var builder = WebApplication.CreateSlimBuilder(args);
HzyApplication.Run<AppStartup>(builder);
功能速查(AI 友好索引)
依赖注入
[Component] // 默认 Transient
[Component(ServiceLifetime.Scoped)] // 指定生命周期
[Component(typeof(IUserService), ServiceLifetime.Singleton)] // 指定接口注册
public class UserService : IUserService { }
public class OrderService
{
[Autowired] // 属性注入(AOP 拦截 get)
public IUserService UserService { get; set; } = null!;
}
注册入口:services.AddDependencyInjectionByComponent([typeof(Program).Assembly])
AOP 拦截器
自定义拦截器继承 AopMoAttribute(基于 Rougamo.Fody 编译期织入,零运行时代理):
public class LogAttribute : AopMoAttribute
{
public override void OnEntry(MethodContext context) { /* 方法进入 */ }
public override void OnSuccess(MethodContext context) { /* 方法成功 */ }
public override void OnException(MethodContext context) { /* 方法异常 */ }
public override void OnExit(MethodContext context) { /* 方法退出(重写时必须调 base) */ }
}
// 内置拦截器
[Time] // 记录方法耗时日志
[MemoryCache(CacheKey = "user:{id}", CacheDuration = 60)] // 内存缓存(秒,0=永久)
EF Core 仓储
// 注册(MySql 为例,其他数据库换对应 Provider 包)
builder.AddRepository<AppDbContext>(new RepositoryOptions
{
DefaultDatabaseType = DefaultDatabaseType.MySql,
ConnectionString = builder.Configuration.GetConnectionString("Default")!
});
// 使用:任意服务构造函数注入 IRepository<T>
public class MemberService(IRepository<Member> memberRepository)
{
// 查询(软删除自动过滤)
var page = await memberRepository.Queryable
.WhereIf(!string.IsNullOrWhiteSpace(keyword), w => w.Name.Contains(keyword))
.ToPageAsync(1, 20);
// 增删改(雪花 ID、审计字段自动填充,[Transactional] 事务保护)
await memberRepository.InsertAsync(entity);
await memberRepository.UpdateAsync(entity);
await memberRepository.DeleteByIdAsync(id); // 软删除:改写为 UPDATE
}
实体特性(标记在属性上即生效,无需配置):
| 特性 | 作用 |
|---|---|
[TableId(IdType.SnowflakeId)] |
主键自动生成:雪花 ID / UUID / UUID 字符串 |
[TableLogic] |
软删除:查询自动过滤 + 删除改写为 UPDATE |
[TableField(TableFieldFill.CreateTime)] |
审计字段自动填充:CreateTime / CreateId / UpdateTime / UpdateId / DeleteTime / DeleteId |
[TableName(NameRuleType.SnakeCase)] |
表名/字段命名规则(蛇形命名 SysFunction → sys_function) |
[Dict("dict_code")] |
数据字典映射 |
[TableFieldEncrypt] |
字段透明加解密 |
方法级特性:
[Transactional] // 事务(支持嵌套复用、多 DbContext)
[Transactional(typeof(AppDbContext), typeof(OtherDbContext))] // 多库事务
public async Task CreateOrderAsync(Order order) { ... }
动态 API 控制器
// 实现该接口(或标记 [DynamicApiController])→ 自动注册为控制器
// 路由 kebab-case,方法名前缀推断 HTTP 方法(Get*/Query*→GET,Add*/Create*→POST,...)
public class MemberAppService : IDynamicApiController
{
public async Task<List<MemberDto>> GetListAsync(string? keyword) { ... }
// → GET /member/list?keyword=xxx (具体规则可配)
}
定时任务
[Component]
public class JobService
{
[Scheduled("0/5 * * * * ?")] // 每 5 秒(Quartz Cron)
public void SyncData() { ... }
}
全局服务网关
App.Services // IServiceCollection
App.ServiceProvider // IServiceProvider(根容器)
App.HttpContext // 当前 HttpContext
App.CreateScope() // 创建服务作用域
App.GetJobTaskInfoList() // 定时任务信息
更多文档
完整功能说明、数据库 Provider 配置、读写分离、分表、并发控制、服务器监控等,见仓库 README: https://gitee.com/hzy6/HZY.Framework
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- EFCore.NamingConventions (>= 10.0.1)
- HZY.Framework.Aop (>= 10.1.18)
- IdGen (>= 3.0.7)
- IdGen.DependencyInjection (>= 3.0.7)
- Newtonsoft.Json (>= 13.0.4)
- Rougamo.Fody (>= 5.0.2)
- System.Linq.Dynamic.Core (>= 1.7.3)
- System.Runtime.Caching (>= 10.0.11)
NuGet packages (6)
Showing the top 5 NuGet packages that depend on HZY.Framework.Repository.EntityFramework:
| Package | Downloads |
|---|---|
|
HZY.Framework.Repository.EntityFramework.MySql
HZY.Framework EF Core 仓储 - MySql Provider ===== 使用教程 ===== 1、安装本包 + HZY.Framework.Repository.EntityFramework,Program.cs 一行注册: builder.AddMySqlRepository<AppDbContext>(new RepositoryOptions { ConnectionString = "server=localhost;port=3306;database=demo;user=root;password=123456;" }); var app = builder.Build(); app.UseRepository(); // AddMySqlRepository 会自动设置 DefaultDatabaseType=MySql 并启用原生批量提供者; // 通用注册 builder.AddRepository<AppDbContext>(...) 也可用,但需自行指定数据库类型 2、实体与使用方式见 HZY.Framework.Repository.EntityFramework 包说明。 BulkInsertRange/BulkUpdateRange/BulkInsertOrUpdateRange 走 MySql 原生批量 SQL。 源码与完整文档:https://gitee.com/hzy6/HZY.Framework |
|
|
HZY.Framework.Repository.EntityFramework.Sqlite
HZY.Framework EF Core 仓储 - Sqlite Provider ===== 使用教程 ===== 1、安装本包 + HZY.Framework.Repository.EntityFramework,Program.cs 一行注册: builder.AddSqliteRepository<AppDbContext>(new RepositoryOptions { ConnectionString = "Data Source=demo.db" }); var app = builder.Build(); app.UseRepository(); // AddSqliteRepository 会自动设置 DefaultDatabaseType 并配置批量操作参数 2、实体与使用方式见 HZY.Framework.Repository.EntityFramework 包说明。 源码与完整文档:https://gitee.com/hzy6/HZY.Framework |
|
|
HZY.Framework.Repository.EntityFramework.PostgreSql
HZY.Framework EF Core 仓储 - PostgreSql Provider ===== 使用教程 ===== 1、安装本包 + HZY.Framework.Repository.EntityFramework,Program.cs 一行注册: builder.AddPostgreSqlRepository<AppDbContext>(new RepositoryOptions { ConnectionString = "Host=localhost;Port=5432;Database=demo;Username=root;Password=123456" }); var app = builder.Build(); app.UseRepository(); // AddPostgreSqlRepository 会自动设置 DefaultDatabaseType 并启用原生批量提供者; // 通用注册 builder.AddRepository<AppDbContext>(...) 也可用,但需自行指定数据库类型 2、实体与使用方式见 HZY.Framework.Repository.EntityFramework 包说明。 BulkInsertRange/BulkUpdateRange/BulkInsertOrUpdateRange 走 PostgreSql 原生批量 SQL。 源码与完整文档:https://gitee.com/hzy6/HZY.Framework |
|
|
HZY.Framework.Repository.EntityFramework.SqlServer
HZY.Framework EF Core 仓储 - SqlServer Provider ===== 使用教程 ===== 1、安装本包 + HZY.Framework.Repository.EntityFramework,Program.cs 一行注册: builder.AddSqlServerRepository<AppDbContext>(new RepositoryOptions { ConnectionString = "Server=.;Database=demo;Trusted_Connection=True;" }); var app = builder.Build(); app.UseRepository(); // AddSqlServerRepository 会自动设置 DefaultDatabaseType 并启用原生批量提供者; // 通用注册 builder.AddRepository<AppDbContext>(...) 也可用,但需自行指定数据库类型 2、实体与使用方式见 HZY.Framework.Repository.EntityFramework 包说明。 BulkInsertRange/BulkUpdateRange/BulkInsertOrUpdateRange 走 SqlServer 原生批量 SQL。 源码与完整文档:https://gitee.com/hzy6/HZY.Framework |
|
|
HZY.Framework.Repository.EntityFramework.Oracle
HZY.Framework EF Core 仓储 - Oracle Provider ===== 使用教程 ===== 1、安装本包 + HZY.Framework.Repository.EntityFramework,Program.cs 一行注册: builder.AddOracleRepository<AppDbContext>(new RepositoryOptions { ConnectionString = "User Id=system;Password=123456;Data Source=localhost:1521/XEPDB1" }); var app = builder.Build(); app.UseRepository(); // AddOracleRepository 会自动设置 DefaultDatabaseType 并启用原生批量提供者; // 通用注册 builder.AddRepository<AppDbContext>(...) 也可用,但需自行指定数据库类型 2、实体与使用方式见 HZY.Framework.Repository.EntityFramework 包说明。 BulkInsertRange/BulkUpdateRange/BulkInsertOrUpdateRange 走 Oracle 原生批量 SQL。 源码与完整文档:https://gitee.com/hzy6/HZY.Framework |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on HZY.Framework.Repository.EntityFramework:
| Repository | Stars |
|---|---|
|
hzy-6/hzy-admin
前后端分离权限管理系统基架! 数据权限、按钮权限、动态菜单、动态任务调度、动态WebApi、定时标记 [Scheduled("0/5 * * * * ?")] 、代码生成
|
| Version | Downloads | Last Updated |
|---|---|---|
| 10.1.18 | 98 | 8/19/2026 |
| 10.1.17 | 116 | 8/18/2026 |
| 10.1.16 | 119 | 8/18/2026 |
| 10.1.15 | 137 | 8/13/2026 |
| 10.1.14 | 122 | 8/13/2026 |
| 10.1.10 | 142 | 8/6/2026 |
| 10.1.9 | 142 | 8/5/2026 |
| 10.1.8 | 163 | 8/3/2026 |
| 10.1.7 | 159 | 8/3/2026 |
| 10.1.6 | 162 | 8/3/2026 |
| 10.1.5 | 164 | 8/3/2026 |
| 10.1.4 | 156 | 8/3/2026 |
| 10.1.3 | 159 | 8/3/2026 |
| 10.1.2 | 156 | 8/3/2026 |
| 10.1.1 | 171 | 8/3/2026 |
| 10.0.13 | 171 | 4/4/2026 |
| 10.0.12 | 149 | 3/18/2026 |
| 10.0.11 | 139 | 3/1/2026 |
| 10.0.9 | 131 | 3/1/2026 |
| 10.0.8 | 133 | 3/1/2026 |