EFCore.Sharding配置详解:自定义分表规则与全局设置最佳实践
EFCore.Sharding配置详解自定义分表规则与全局设置最佳实践【免费下载链接】EFCore.ShardingDatabase Sharding For EFCore项目地址: https://gitcode.com/gh_mirrors/ef/EFCore.ShardingEFCore.Sharding是一款专为Entity Framework Core设计的数据库分表框架通过灵活的分表规则配置和全局设置帮助开发者轻松实现数据分片存储提升系统性能和可扩展性。无论是哈希取模分表还是按时间范围分表都能通过简单的API快速集成到现有项目中。分表规则核心概念与类型EFCore.Sharding提供两种主流分表策略通过ShardingRule类实现规则定义该类位于src/EFCore.Sharding/Primitives/ShardingRule.cs。哈希取模分表HashMod基于指定字段的哈希值进行取模运算将数据均匀分布到多个表中。适用于数据访问频率均匀、无明显时间规律的场景。核心参数包括ShardingField分表字段名如订单IDMod分表数量决定数据分布的表数量日期分表Date根据时间字段自动创建按时间范围划分的表如按日、按月。适用于具有明显时间序列特征的数据如日志、订单记录等。核心参数包括ExpandByDateMode时间粒度支持分钟、小时、日、月、年ShardingField日期类型的分表字段如创建时间自定义分表规则配置步骤1. 哈希取模分表配置通过IShardingBuilder的SetHashModSharding方法配置在启动时注册分表规则// 示例对Order实体按Id字段进行3表哈希分表 services.AddEFCoreSharding(config { config.SetHashModShardingOrder(nameof(Order.Id), 3); });上述代码会将Order表按Id字段的哈希值取模3分散到Order_0、Order_1、Order_2三个物理表中。实际项目中可参考examples/Demo.ModSharding/Program.cs的完整实现。2. 日期分表配置使用SetDateSharding方法配置时间范围分表支持指定起始时间和时间粒度// 示例对AuditLog按创建时间按月分表 var startTime new DateTime(2023, 1, 1); services.AddEFCoreSharding(config { config.SetDateShardingAuditLog( nameof(AuditLog.CreateTime), ExpandByDateMode.PerMonth, startTime ); });此配置会自动创建AuditLog_202301、AuditLog_202302等按月命名的物理表。详细示例可查看examples/Demo.DateSharding/Program.cs。高级分表规则多数据源与范围映射多数据源分表支持将不同范围的数据路由到不同数据源通过传入范围数组实现// 示例将Id 0-10000路由到SourceA10001-20000路由到SourceB config.SetHashModShardingOrder( nameof(Order.Id), 20000, (0, 10000, SourceA), (10001, 20000, SourceB) );时间范围映射对日期分表也支持多数据源配置不同时间段的数据存储到不同数据库// 示例2023年数据存储到Year2023库2024年数据存储到Year2024库 config.SetDateShardingAuditLog( nameof(AuditLog.CreateTime), ExpandByDateMode.PerYear, (new DateTime(2023, 1, 1), new DateTime(2024, 1, 1), Year2023), (new DateTime(2024, 1, 1), DateTime.MaxValue, Year2024) );全局设置最佳实践1. 基础配置项通过IShardingBuilder接口提供丰富的全局设置核心配置包括方法作用示例SetCommandTimeout设置SQL命令超时时间SetCommandTimeout(30)MigrationsWithoutForeignKey迁移时忽略外键MigrationsWithoutForeignKey()CreateShardingTableOnStarting启动时自动创建分表CreateShardingTableOnStarting(true)EnableShardingMigration启用分表迁移支持EnableShardingMigration(true)2. 逻辑删除配置通过UseLogicDelete启用逻辑删除功能自动过滤已删除数据// 示例配置逻辑删除字段 config.UseLogicDelete( keyField: Id, // 主键字段名 deletedField: IsDeleted // 逻辑删除标记字段 );3. 数据源配置支持读写分离和多数据源配置通过UseDatabase或AddDataSource方法注册数据源// 示例配置主从分离数据源 config.UseDatabase( new[] { (主库连接字符串, ReadWriteType.Write), (从库1连接字符串, ReadWriteType.Read), (从库2连接字符串, ReadWriteType.Read) }, DatabaseType.SqlServer );常见问题与解决方案分表字段选择原则哈希分表选择分布均匀的字段如自增ID、用户ID日期分表必须使用DateTime类型字段建议选择数据写入的时间戳分表数量规划哈希分表建议根据预估数据量设置一般每个物理表控制在1000万行以内日期分表根据数据增长速度选择合适粒度如日志表按日分表订单表按月分表已有数据迁移对于历史数据迁移可使用src/EFCore.Sharding/Migrations/MigrationHelper.cs提供的工具类实现数据平滑迁移到分表结构。配置示例完整启动流程以下是一个包含分表规则和全局设置的完整配置示例var services new ServiceCollection(); services.AddEFCoreSharding(config { // 全局设置 config.SetCommandTimeout(30) .CreateShardingTableOnStarting(true) .EnableShardingMigration(true); // 分表规则配置 config.SetHashModShardingOrder(nameof(Order.Id), 10) .SetDateShardingOrderLog( nameof(OrderLog.CreateTime), ExpandByDateMode.PerDay, new DateTime(2023, 1, 1) ); // 数据源配置 config.UseDatabase(连接字符串, DatabaseType.SqlServer); });通过以上配置EFCore.Sharding将自动处理分表逻辑开发者无需关心底层物理表结构直接通过EF Core的常规API操作即可。更多配置细节可参考项目中的示例代码和src/EFCore.Sharding/DependencyInjection/IShardingBuilder.cs接口定义。【免费下载链接】EFCore.ShardingDatabase Sharding For EFCore项目地址: https://gitcode.com/gh_mirrors/ef/EFCore.Sharding创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

网盘直链下载助手:九大网盘文件高速下载终极指南

网盘直链下载助手:九大网盘文件高速下载终极指南

网盘直链下载助手:九大网盘文件高速下载终极指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 …

2026/7/26 13:29:58阅读更多 →
从API到本地部署:BU-30B-A3B-Preview的两种高效使用方式对比

从API到本地部署:BU-30B-A3B-Preview的两种高效使用方式对比

从API到本地部署:BU-30B-A3B-Preview的两种高效使用方式对比 【免费下载链接】bu-30b-a3b-preview 项目地址: https://ai.gitcode.com/hf_mirrors/browser-use/bu-30b-a3b-preview BU-30B-A3B-Preview是一款基于Qwen3-VL-30B-A3B-Instruct开发的视觉语言模型…

2026/7/26 13:27:57阅读更多 →
B站漫画如何一键下载到本地?终极完整解决方案指南

B站漫画如何一键下载到本地?终极完整解决方案指南

B站漫画如何一键下载到本地?终极完整解决方案指南 【免费下载链接】BiliBili-Manga-Downloader 一个好用的哔哩哔哩漫画下载器,拥有图形界面,支持关键词搜索漫画和二维码登入,黑科技下载未解锁章节,多线程下载&#xf…

2026/7/26 13:27:57阅读更多 →
工业质检自动标注系统:YOLO+SAM+机械臂实战

工业质检自动标注系统:YOLO+SAM+机械臂实战

1. 项目背景与核心价值 工业质检领域长期面临两大痛点:缺陷样本获取成本高和标注效率低下。传统人工标注不仅耗时费力(单个缺陷标注平均需要3-5分钟),还存在主观判断差异。我们团队通过整合YOLO目标检测、OpenClaw机械臂控制以及S…

2026/7/26 14:56:17阅读更多 →
GroundingDINO终极配置指南:如何选择SwinT与SwinB实现最佳零样本目标检测

GroundingDINO终极配置指南:如何选择SwinT与SwinB实现最佳零样本目标检测

GroundingDINO终极配置指南:如何选择SwinT与SwinB实现最佳零样本目标检测 【免费下载链接】GroundingDINO [ECCV 2024] Official implementation of the paper "Grounding DINO: Marrying DINO with Grounded Pre-Training for Open-Set Object Detection"…

2026/7/26 14:56:17阅读更多 →
AI摘要技术对开发者内容生态的影响与应对策略

AI摘要技术对开发者内容生态的影响与应对策略

如果你是一名开发者,最近可能已经注意到一个趋势:当你在搜索引擎中输入技术问题时,结果页面顶部直接出现了AI生成的答案摘要。这种变化看似提升了信息获取效率,但对于依赖流量生存的内容平台和技术博客作者来说,却可能…

2026/7/26 14:56:17阅读更多 →
终极指南:如何在Windows上免费获得B站最佳观看体验

终极指南:如何在Windows上免费获得B站最佳观看体验

终极指南:如何在Windows上免费获得B站最佳观看体验 【免费下载链接】BiliBili-UWP BiliBili的UWP客户端,当然,是第三方的了 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBili-UWP 还在为Windows上观看B站视频卡顿、浏览器占用资…

2026/7/26 14:56:17阅读更多 →
为什么你的AI写作总像“流水账”?直播转文章的3层语义解析模型(含BERT+RAG+Prompt Engineering实战参数)

为什么你的AI写作总像“流水账”?直播转文章的3层语义解析模型(含BERT+RAG+Prompt Engineering实战参数)

更多请点击: https://codechina.net 第一章:为什么你的AI写作总像“流水账”? AI写作陷入“流水账”困境,根源常不在模型能力本身,而在于提示词设计、上下文结构与输出约束的系统性缺失。当提示仅包含模糊指令&#x…

2026/7/26 14:56:17阅读更多 →
基于深度学习的蝴蝶识别系统设计与优化

基于深度学习的蝴蝶识别系统设计与优化

1. 项目背景与核心价值 蝴蝶识别系统这个项目听起来像是计算机视觉领域的一个典型应用场景。作为一名长期从事图像识别开发的工程师,我深知这类系统在生态研究、农业监测以及科普教育中的实际价值。传统昆虫分类工作往往依赖专业人员的肉眼观察,效率低下…

2026/7/26 14:54:16阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/26 0:01:28阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/26 0:01:28阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/26 0:01:28阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/25 23:03:25阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/25 19:03:04阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/25 19:03:04阅读更多 →