基于 EntityFramework 的数据库主从读写分离架构(1) - 原理概述和基本功能实现...
1 public class DbMasterSlaveCommandInterceptor : DbCommandInterceptor 2 { 3 private string masterConnectionString = "server=192.168.0.99;port=3306;user id=root;password=123456;persistsecurityinfo=True;database=testdb"; 4 private string slaveConnectionString = "server=192.168.0.101;port=3306;user id=root;password=123456;persistsecurityinfo=True;database=testdb"; 5 public override void ReaderExecuting(DbCommand command, DbCommandInterceptionContext<DbDataReader> interceptionContext) 6 { 7 this.UpdateConnectionString(interceptionContext, this.slaveConnectionString); 8 } 9 public override void ScalarExecuting(DbCommand command, DbCommandInterceptionContext<object> interceptionContext) 10 { 11 this.UpdateConnectionString(interceptionContext, this.slaveConnectionString); 12 } 13 public override void NonQueryExecuting(DbCommand command, DbCommandInterceptionContext<int> interceptionContext) 14 { 15 this.UpdateConnectionString(interceptionContext, this.masterConnectionString); 16 } 17 private void UpdateConnectionString(DbInterceptionContext interceptionContext, string connectionString) 18 { 19 foreach (var context in interceptionContext.DbContexts) 20 { 21 this.UpdateConnectionString(context.Database.Connection, connectionString); 22 } 23 } 24 private void UpdateConnectionString(DbConnection conn, string connectionString) 25 { 26 ConnectionState state = conn.State; 27 if (state == ConnectionState.Open) 28 conn.Close(); 29 conn.ConnectionString = connectionString; 30 if (state == ConnectionState.Open) 31 conn.Open(); 32 } 33 }
接着,在 Global.asax 的启动代码中将该 类型的实体注入 EF 全局执行上下文中。
1 public class MyHttpApplication : HttpApplication 2 { 3 protected void Application_Start() 4 { 5 DbInterception.Add(new DbMasterSlaveCommandInterceptor()); 6 } 7 }
怎么样,原理是不是很简单?当然,如果想要实现一些丰富的配置和扩展功能,就还需要很多其他的代码了,关于这些本人将会在后续文章中逐步介绍!
转载于:https://www.cnblogs.com/cjw0511/p/4398267.html
基于 EntityFramework 的数据库主从读写分离架构(1) - 原理概述和基本功能实现...相关推荐
- 基于 EntityFramework 的数据库主从读写分离架构(2)- 改进配置和添加事务支持...
回到目录,完整代码请查看(https://github.com/cjw0511/NDF.Infrastructure)中的目录: src\ NDF.Data.EntityFramework\Maste ...
- ef mysql 读写分离_基于 EntityFramework 的数据库主从读写分离服务插件
基于 EntityFramework 的数据库主从读写分离服务插件 1. 版本信息和源码 1.1版本信息 v1.01 beta(2015-04-07),基于 EF 6.1 开发,支持 EF 6.1 之 ...
- Django项目配置mysql主从数据库实现读写分离
1.在配置文件中添加slave数据库的配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', ...
- 数据库之架构:主备+分库?主从+读写分离?
数据库之架构:主备+分库?主从+读写分离? 原文:数据库之架构:主备+分库?主从+读写分离? 一.数据库架构原则 高可用 高性能 一致性 扩展性 二.常见的架构方案 方案一:主备架构,只有主库提供读写 ...
- 数据库读写分离架构详解
RD:数据量太大,数据库扛不住了,帮忙申请一个从库,读写分离. DBA:数据量多少? RD:5000w左右. DBA:读写吞吐量呢? RD:读QPS约200,写QPS约30左右. 额,数据库读写分离虽 ...
- mysql查询并设置高亮_Thinkphp3.2.3设置MySql主从读写分离后,简单调用主数据库查询
图/文:迷神 Thinkphp是一款不错的国产框架,使用范围广,应用也比较多.随着网站访问增大往往需要使用mysql主从同步功能,本身Thinkphp自带了主从读写分离的功能了. 但是我们经常有一个场 ...
- MySQL数据库:读写分离
一.读写分离的原理: 1.实现原理: 读写分离解决的是,数据库的写操作,影响了查询的效率,适用于读远大于写的场景.读写分离的实现基础是主从复制,主数据库利用主从复制将自身数据的改变同步到从数据库集群中 ...
- 基于mycat的mysql_基于Mycat中间件的MySQL读写分离
基于Mycat中间件的MySQL读写分离 简述 mycat是国内开源的数据库中间件,可以实现mysql读写分离和主备热切换,容灾,数据分片等功能. 详情:http://www.mycat.io/ 架构 ...
- 徐无忌MySQL笔记:案例实战:如何实现MySQL数据库的读写分离?
徐无忌MySQL笔记:案例实战:如何实现MySQL数据库的读写分离? 完成:第一遍 1.理想的主从架构实现的效果是怎样的? 主库负责所有读写操作,从库只实现对主库备份功能,这样的主从架构性价比是很低的 ...
最新文章
- hihoCoder 第136周 优化延迟(二分答案+手写堆)
- powerdesigner mysql 反引号_PowerDesigner实用技巧小结 及 导出word,想字段顺序跟模型中一致,如何设置...
- 6.6 rsync:文件同步工具
- 深度学习——02、深度学习入门 15-18
- asp.net core安全事项(上)
- mysql启动命令指定data目录_CentOS 7下MySQL的data目录更改后,使用mysqld服务启动失败...
- unixbench分析_unixbench测试CPU性能工具
- 如何用计算机看苹果手机的文件,如何在电脑上管理iphone文件?
- 如何缩减XFS分区格式的根目录
- 谁可以参与初创股权分配?
- 华尔街日报:郭台铭的“紫禁城”
- 文献阅读笔记 # Space/Aerial-Assisted Computing Offloading for IoT Applications: A Learning-Based Approach
- mysql的group语句_MySQL中distinct与group by语句的一些比较及用法讲解
- SQL Server 2008 R2 RTM 中文版 序列号(转)
- java bubble sort_Java-BubbleSort
- EXCEL与地图无缝结合,实现地址解析,标注联动更新
- 融云 rongyun
- Android gif 录屏
- 【100个 Unity实用技能】☀️ | Unity中设置 允许的最大帧数,锁定游戏的最大帧率(游戏锁帧)
- ORB_SLAM 算法框架解析
热门文章
- JSON.parseObject(String str)与JSONObject.parseObject(String str)的区别
- 关于链表和指针变量的使用说明,可用于框架设计
- JDBC连接sql server数据库及其它
- 《无线网络安全攻防实战》读书笔记
- 体绘制(Volume Rendering)概述介绍
- 网络高可用性解决方案
- 深入学习Redis持久化
- b2c开发模式的数据库设计
- BZOJ4196:[NOI2015]软件包管理器——题解
- SpringInAction--自动化装配Bean(显示装配之xml配置)