Fast ORM 读写分离功能使用
2023-12-06 16:26:48 作者:admin
Fast Framework
作者 Mr-zhong
代码改变世界....
一、前言
Fast Framework 基于NET6.0 封装的轻量级 ORM 框架 支持多种数据库 SqlServer Oracle MySql PostgreSql Sqlite
优点: 体积小、原生支持微软特性、流畅API、使用简单、性能高、模型数据绑定采用 Expression、强大的表达式解析、支持多种子查询可实现较为复杂查询、源代码可读性强、支持AOT 编译。
缺点:目前仅支持Db Frist
开源地址:https://github.com/China-Mr-zhong/Fast.Framework (唯一)
ps:权重随机算法、支持故障转移、故障回调(可做日志记录或通知)
一、appsettings.json 配置
{ "DbOptions": [ { "DbId": "db_01", "DbType": "MySQL", "IsDefault": true, "ConnectionStrings": "server=localhost;database=Test;user=root;pwd=123456789;port=3306;min pool size=0;max pool size=100;connect timeout=120;AllowLoadLocalInfile=true;", "UseMasterSlaveSeparation": true, //使用主从分离 注意所有事务将强制走主库 "SlaveItems": [ { "DbId": "A", "Weight": 60, "ConnectionStrings": "server=localhost;database=Test1;user=root;pwd=123456789;port=3306;min pool size=0;max pool size=100;connect timeout=120;AllowLoadLocalInfile=true;", "Description": "A数据库" }, { "DbId": "B", "Weight": 40, "ConnectionStrings": "server=localhost;database=Test2;user=root;pwd=123456789;port=3306;min pool size=0;max pool size=100;connect timeout=120;AllowLoadLocalInfile=true;", "Description": "B数据库" } ], "Description": "主库连接配置" } ]}
二、 Program (入口配置)
builder.Services.Configure<List<DbOptions>>(builder.Configuration.GetSection("DbOptions"));//注册Options接口 builder.Services.AddFastDbContext();//添加上下文
四、使用示例
db.Aop.SlaveDbFault = (options, ex) => { //故障回调 Console.WriteLine($"从库ID:{options.DbId} 发生故障!!! 异常信息:{ex.Message}"); }; var data = db.Query<Product>().First(); Console.WriteLine(Json.Serialize(data)); Console.WriteLine(); Console.WriteLine($"从库索引:{db.Ado.CurrentSlaveDbIndex} 从库ID:{db.Ado.SlaveDbOptions.DbId}");
猜你喜欢
联络方式:
400-123-789
邮箱:xiachao@163.com
Q Q:12345678
微信公众号
微信二维码