C#FreeSql分库分表

news2024/12/23 9:33:10

复制代码

using FreeSql;
using FreeSql.DataAnnotations;

namespace FreeSqlMaster
{
    internal class Program
    {
        static IFreeSql freeSql = null;

        static void Main(string[] args)
        {
            // 读写分离
            // FreeSql 实现了第3种方案,支持一个【主库】多个【从库】,【从库】的查询策略为随机方式。
            // 若某【从库】发生故障,将切换到其他可用【从库】,若已全部不可用则使用【主库】查询。
            // 出现故障【从库】被隔离起来间隔性的检查可用状态,以待恢复
            var connstr_master = "server=127.0.0.1;port=3306;database=test;user=root;password=root;charset=utf8;SslMode=none;Pooling=true;Min Pool Size=0;Max Pool Size=100;Charset=utf8";
            var connstr_slave1 = "server=127.0.0.1;port=3306;database=test1;user=root;password=root;charset=utf8;SslMode=none;Pooling=true;Min Pool Size=0;Max Pool Size=100;Charset=utf8";
            var connstr2_mysql = "server=127.0.0.1;port=3306;database=test;user=root;password=root;charset=utf8;SslMode=none;Pooling=true;Min Pool Size=0;Max Pool Size=100;Charset=utf8";

            freeSql = new FreeSql.FreeSqlBuilder()
                .UseConnectionString(FreeSql.DataType.MySql, connstr_master)
                .UseAutoSyncStructure(true) // 自动同步实体结构到数据库
                                            //.UseSlave(connstr_slave1)//, "connstr_sqlserver2") //使用从数据库,支持多个
                                            //.UseSlaveWeight()
                .Build();

            //Student model = new Student() { Name = "1" };
            //freeSql.Insert(model).ExecuteAffrows();
            freeSql.Update<Student>().SetSource(model).ExecuteAffrows();

            //var d = freeSql.Select<Student>().Where(x => x.Name == "1").First(); //select.Where(a => a.Id == 1).ToOne(); //读【从库】(默认) //select.Master().WhereId(a => a.Id == 1).ToOne(); //强制读【主库】  

            // 分表
            //freeSql.Select<Log>().Any();
            var logRepository = freeSql.GetGuidRepository<Log>(null, oldname => $"{oldname}_201903");
            logRepository.Insert( new Log() { Content = "201903" });
            logRepository.Update(new Log() { Content = "111", Id = 1 });
            logRepository.Delete(new Log() { Id = 1 });

            logRepository = freeSql.GetGuidRepository<Log>(null, oldname => $"{oldname}_201904");
            logRepository.Insert(new Log() { Content = "201904" });

            // 跨表查询
            var sql = freeSql.Select<Log>()
                    .AsTable((type, oldname) => "Log_201903")
                    .AsTable((type, oldname) => "Log_201904")
                    .ToList();// a => a.Id

            // 分库 
            IdleBus<IFreeSql> ib = new IdleBus<IFreeSql>(TimeSpan.FromMinutes(10)); 
            ib.Register("test", () => new FreeSqlBuilder().UseConnectionString(DataType.MySql, connstr_master).Build());
            ib.Register("test1", () => new FreeSqlBuilder().UseConnectionString(DataType.MySql, connstr_slave1).Build()); 
            var lst1 = ib.Get("test").Select<Student>().Limit(10).ToList();
            var lst2 = ib.Get("test1").Select<Student>().Limit(10).ToList();

            Console.ReadKey();
        }

        public class Student
        {
            [Column(Name = "id", IsIdentity = true, IsPrimary = true)]
            public int Id { get; set; }
            public string Name { get; set; }
        }

        public class Log
        {
            [Column(Name = "id", IsIdentity = true, IsPrimary = true)]
            public int Id { get; set; }
            public string Content { get; set; }
        }
    }
}

复制代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/970941.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MPU6050姿态手势控制:二自由度云台

使用芯片&#xff1a;STM32 F103 C8T6 开源一款 MPU6050姿态手势控制二自由度云台 的设计程序与硬件清单&#xff0c;文章会贴出基本原理所需学习的文章连接&#xff0c;测试效果&#xff0c;元件清单&#xff0c;工程下载。 之前有做过二自由度机械臂的开发&#xff0c;但材…

阿里巴巴新一代SpringCloud学习指南重磅发布,揭示中国特色微服务组件的奥秘

SpringCloud Alibaba 的优势 阿里使用过的组件经历了考验&#xff0c;性能强悍&#xff0c;设计合理&#xff0c;现在开源出来给大家用。成套产品搭配完善的可视化界面给开发运维带来了极大的便利。搭建简单&#xff0c;学习曲线低。 作为国内微服务领域的领军企业&#xff0…

“钉钉官网首页的炫酷动效” 被我用css新特性轻松破解啦~

&#x1f33b; 前言 其实写本文的初衷只是想分享一个css新特性【scroll-timeline】&#x1f602;,但是我想要体现出它的强大效果&#xff0c;此时正好想到了之前看到过钉钉的首页动画&#xff0c;就是滚动页面然后进行一系列动画的&#xff0c;所以我决定实现一下这个效果。&am…

ChatGPT AIGC 完成动态堆积面积图实例

先使用ChatGPT AIGC描述一下堆积面积图的功能与作用。 接下来一起看一下ChatGPT做出的动态可视化效果图: 这样的动态图案例代码使用ChatGPT AIGC完成。 将完整代码复制如下: <!DOCTYPE html> <html> <head><meta charset="utf-8"><tit…

为反应系统实现MQTT客户端

MQTT-Reactive的目的是提供一种用C编写的可移植且无阻塞的MQTT客户端&#xff0c;以便在反应式嵌入式系统中使用。首先&#xff0c;本文说明什么是反应系统。然后&#xff0c;它描述了如何为这种系统设计合适的软件结构。最后&#xff0c;本文展示了如何通过使用状态机和事件驱…

【校招VIP】测试技术考点之单元测试集成测试

考点介绍&#xff1a; 单元测试,集成测试的区别是&#xff1a;方式不同、粒度不同、内容不同。单元测试用用于验证编码单元的正确性。集成测试用于验证详细设计。体现了测试由小到大、又内至外、循序渐进的测试过程和分而治之的思想。 测试技术考点之单元测试&集成测试-相…

WIN11有网络但浏览器打不开

打开设置-》网络和INTERNET-》代理&#xff0c;将自动检测设置打开&#xff0c;将手动设置代理中的使用代理服务器关闭。就可以打开浏览器了。 不知道为什么会出现这样的问题

【数据分享】2009-2021年我国省份级别的轨道交通相关指标(30多项指标)

《中国城市建设统计年鉴》中细致地统计了我国城市市政公用设施建设与发展情况&#xff0c;在之前的文章中&#xff0c;我们分享过基于2006-2021年《中国城市建设统计年鉴》整理的2006—2021年我国省份级别的市政设施水平相关指标、2006-2021年我国省份级别的各类建设用地面积数…

vue3 搭配ElementPlus做基础表单校验 自定义表单校验

<script setup> import { ref, reactive } from vue// 表单元素 const dom ref(null) // 校验规则 const rules {name: [{ required: true, message: 请输入活动名称, trigger: blur }],//校验手机号格式phone: [{ required: true, message: "请输入电话", t…

问道管理:证券市场也有中介机构吗?他们具体干什么?

证券市场是一个很大的发行流通生意市场&#xff0c;在这个市场上&#xff0c;有许许多多不同的生意主体。而有生意就会有中介&#xff0c;证券市场上也有中介组织吗&#xff1f;如果有&#xff0c;他们具体又是干什么的&#xff1f;关于这些&#xff0c;问道管理为我们预备了以…

使命召唤中将启用AI检测仇恨言论!

“ToxMod”将自动标记口头骚扰、欺凌和歧视。 周三&#xff0c;动视宣布的它将在即将于11月10日发布的中引入实时人工智能语音聊天调节功能使命召唤:现代战争3。该公司正与调整为了实现这一特性&#xff0c;我们使用了一种叫做托西莫德识别仇恨言论、欺凌、骚扰和歧视并采取行动…

【云原生】容器编排工具Kubernetes

目录 一、 K8S介绍 官网地址&#xff1a; 1.1docker编排与k8s编排相比 1.2特性 1.3功能 二、K8S重要组件 2.1核心组件 &#xff08;1&#xff09;Kube-apiserver &#xff08;2&#xff09;Kube-controller-manager &#xff08;3&#xff09;Kube-scheduler &#x…

前端自动化部署,Devops,CI/CD

DevOps 提到 Jenkins&#xff0c;想到的第一个概念就是 CI/CD 在这之前应该再了解一个概念。 DevOps Development 和 Operations 的组合&#xff0c;是一种方法论&#xff0c;并不特指某种技术或者工具。DevOps 是一种重视 Dev 开发人员和 Ops 运维人员之间沟通、协作的流程。…

打造高效外卖外送商城系统:代码示例和关键功能介绍

随着外卖外送服务的普及&#xff0c;开发一款高效的外卖外送商城系统对于餐馆和食品供应商来说至关重要。这篇文章将为您提供一个简单的外卖外送商城系统的示例代码&#xff0c;并介绍关键功能&#xff0c;以帮助您了解这类系统的工作原理和关键部分。 1. 准备工作 首先&…

搭建harbor

1.安装docker curl -sfL https://get.rainbond.com/install_docker | bash2.安装docker-compose yum install -y docker-compose3.安装harbor 在线离线包下载 选一个喜欢的右击复制链接下载地址 wget https://ghproxy.com/https://github.com/goharbor/harbor/releases/dow…

opencv-4.5.2-android-sdk.zip安装教程

opencv-4.5.2-android-sdk.zip&#xff1a; 下载链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;s0p2 导入模块的方法: ①、导入模块 ②、定位到sdk目录 点击ok就行&#xff0c;就导入成功了。导入成功后会多出一个可展开的opencv文件夹(自己命名的),一定要能展…

MyBatis中至关重要的关系映射----全方面介绍

目录 一 对于映射的概念 1.1 三种关系映射 1.2 resultType与resultMap的区别 resultType&#xff1a; resultMap&#xff1a; 二&#xff0c;一对一关联查询 2.1 嵌套结果集编写 2.2 案例演示 三&#xff0c;一对多关联查询 3.1 嵌套结果集编写 3.3 案例演示 四&…

使用命令行创建仓库

如果你还没有任何代码&#xff0c;可以通过命令行工具创建一个全新的Git仓库并初始化到本项目仓库中。 git clone https://e.coding.net/***/neurosens.git cd neurosens echo "# neurosens" >> README.md git add README.md git commit -m "first commi…

Springboot使用hikari连接池进行Kerberos认证访问Impala

springboot-kerberos-hikari-impala Springboot使用hikari连接池并进行Kerberos认证访问Impala的演示项目 Springboot使用hikari连接池并进行Kerberos认证访问Impala的demo地址:https://github.com/Raray-chuan/springboot-kerberos-hikari-impala 修改后的Hikari源码地址:h…

详解4种类型的爬虫技术

聚焦网络爬虫是“面向特定主题需求”的一种爬虫程序&#xff0c;而通用网络爬虫则是捜索引擎抓取系统&#xff08;Baidu、Google、Yahoo等&#xff09;的重要组成部分&#xff0c;主要目的是将互联网上的网页下载到本地&#xff0c;形成一个互联网内容的镜像备份。 增量抓取意…