efcore根据多个条件更新_.NET开源分表框架:EFCore.Sharding

fdaa1ad4b8cc56303f23ce9dc6408f76.png 【开源项目作者  / 寒空飞箭 一个为EF Core提供Sharding的开源框架
在博客园上小编Edison高兴地发现了一个为EF Core提供读写分离分库分表支持的开源框架EFCore.Sharding,因此特破例于今日周二转载此文以快速地分享与各位童鞋。 本文作者寒空飞箭,该项目源码地址传送门:https://github.com/Coldairarrow/EFCore.Sharding 1项目简介

读写分离分库分表一直是数据库领域中的重难点,当数据规模达到单库极限的时候,就不得不考虑分表方案。EF Core作为.NET Core中最为主流的ORM,用起来十分方便快捷,但是官方并没有相应的Sharding支持,鄙人不才,经过一番摸索之后终于完成这个框架。

本框架旨在为EF Core提供Sharding(即读写分离分库分表)支持,不仅提供了一套强大的普通数据操作接口,并且降低了分表难度,支持按时间自动分表扩容,提供的操作接口简洁统一。

源码地址:https://github.com/Coldairarrow/EFCore.Sharding

2快速开始

准备工作

首先根据需要安装对应的Nuget包: 0f850fa3c7ccc3cfea35ad698fc7e6f3.png

配置工作

class Base_UnitTestShardingRule : ModShardingRule{
        protected override string KeyField => "Id";    protected override int Mod => 3;}ShardingConfig.Init(config =>{
        config.AddAbsDb(DatabaseType.SQLite)        .AddPhysicDb(ReadWriteType.Read | ReadWriteType.Write, "DataSource=db.db")        .AddPhysicDbGroup()        .AddPhysicTable("Base_UnitTest_0")        .AddPhysicTable("Base_UnitTest_1")        .AddPhysicTable("Base_UnitTest_2")        .SetShardingRule(new Base_UnitTestShardingRule());});

上述代码中完成了Sharding配置

  • AddAbsDb是指添加抽象数据库,抽象数据库就是将多个分库看成同一个数据库来进行操作

  • AddPhysicDbGroup是指添加物理数据库组,在同一组物理数据库中,它们数据库类型相同,拥有的表相同,每个数据库拥有的数据是一致的(之间通过主主复制或主从复制进行数据同步)

  • AddPhysicTable是指添加物理数据表,传入的Base_UnitTest是抽象数据表(即将Base_UnitTest拆分为Base_UnitTest_0~2)

  • Base_UnitTestShardingRule是采用的分表规则,上述代码中采用的是哈希取模的分表方式

开始使用

配置完成,下面开始使用,使用方式非常简单,与平常使用基本一致。 首先获取分片仓储接口 IShardingRepository:
IShardingRepository _db = DbFactory.GetRepository().ToSharding();
然后即可进行数据操作:
B
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值