mirror of
https://github.com/dotnetcore/FreeSql.git
synced 2026-02-13 11:50:56 +08:00
update
31
分表分库.md
31
分表分库.md
@@ -187,10 +187,35 @@ fsql.Change(DbEnum.db3).Select<T>();
|
||||
//以后所有 fsql.Select/Insert/Update/Delete 操作是 db3
|
||||
```
|
||||
|
||||
分库总结:
|
||||
自动定向数据库配置:
|
||||
|
||||
- 跨库 事务不好处理,注意了;
|
||||
- 跨库 查询不好处理,注意了;
|
||||
```c#
|
||||
//对 fsql.CRUD 方法名 + 实体类型 进行拦截,自动定向到对应的数据库,达到自动 Change 切换数据库目的
|
||||
fsql.EntitySteering = (_, e) =>
|
||||
{
|
||||
switch (e.MethodName)
|
||||
{
|
||||
case "Select":
|
||||
if (e.EntityType == typeof(T))
|
||||
{
|
||||
//查询 T 自动定向 db3
|
||||
e.DBKey = DbEnum.db3;
|
||||
}
|
||||
else if (e.DBKey == DbEnum.db1)
|
||||
{
|
||||
//此处像不像读写分离?
|
||||
var dbkeyIndex = new Random().Next(0, e.AvailableDBKeys.Length);
|
||||
e.DBKey = e.AvailableDBKeys[dbkeyIndex]; //重新定向到其他 db
|
||||
}
|
||||
break;
|
||||
case "Insert":
|
||||
case "Update":
|
||||
case "Delete":
|
||||
case "InsertOrUpdate":
|
||||
break;
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
## 参考资料
|
||||
|
||||
|
||||
Reference in New Issue
Block a user