一款针对EF Core轻量级分表分库/读写分离的开源项目

科技资讯 投稿 8400 0 评论

一款针对EF Core轻量级分表分库/读写分离的开源项目

分表分库通常包含垂直分库、垂直分表、水平分库和水平分表方案,包括分表分库方案,实现每一个方案都需要花费一定的时间;所以,今天给大家推荐一个基于EF Code实现的分表分库、读写分离开源库,可以让我们零成本的接入。

项目简介

项目特性

1、分表:时间分表、自定义分表、多表查询更新删除。

3、分表分库:支持部分表格分表、部分表格分库。

5、其他:支持动态分表、分库,支持高性能查询,支持事务等。

技术架构

2、支持 Standard 2.0、.NetCore 2.0+。

项目结构

快速上手

1、表的定义

public class SysUserMod:IAge
{
/// <summary>
/// 用户Id用于分表
/// </summary>
public string Id { get; set; }
/// <summary>
/// 用户名称
/// </summary>
public string Name { get; set; }
/// <summary>
/// 用户姓名
/// </summary>
public int Age { get; set; }
}

2、分表规则

public class SysUserModVirtualTableRoute : AbstractSimpleShardingModKeyStringVirtualTableRoute<SysUserMod>
{
    //根据ID取模3,分为2张表
public SysUserModVirtualTableRoute( : base(2,3
    {
    }

public override void Configure(EntityMetadataTableBuilder<SysUserMod> builder
    {
        builder.ShardingProperty(o => o.Id;
    }

}

3、Startup配置

public void ConfigureServices(IServiceCollection services
{
    ......
    services.AddShardingDbContext<DefaultShardingDbContext>(
        .UseRouteConfig(o =>
        {
//定义分表路由
            o.AddShardingDataSourceRoute<SysUserModVirtualDataSourceRoute>(;
        }.UseConfig((sp,o =>
        {
            ......
//指定主从数据库
            o.AddDefaultDataSource("ds0",
"server=127.0.0.1;port=3306;database=db1;userid=root;password=root;";
            o.AddExtraDataSource(sp => new Dictionary<string, string>(
            {
                { "ds1", "server=127.0.0.1;port=3306;database=db2;userid=root;password=root;" },
                { "ds2", "server=127.0.0.1;port=3306;database=db3;userid=root;password=root;" }
            };
      

编程笔记 » 一款针对EF Core轻量级分表分库/读写分离的开源项目

赞同 (46) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽