Updated 分表分库 (markdown)

2881099
2021-03-03 12:43:32 +08:00
parent 3b7338f7ea
commit e98cfea895

@@ -97,23 +97,22 @@ var db2_list = fsql.Change("db2").Select<T>().ToList();
```c#
using FreeSql;
using FreeSql.Internal;
using FreeSql.Internal.CommonProvider;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
namespace net50_webapi_idlebus
{
public class MultiFreeSql : MultiFreeSql<string> { }
public partial class MultiFreeSql<TDBKey> : IFreeSql
public partial class MultiFreeSql<TDBKey> : BaseDbProvider, IFreeSql
{
internal TDBKey _dbkeyMaster;
internal AsyncLocal<TDBKey> _dbkeyCurrent = new AsyncLocal<TDBKey>();
IFreeSql _ormMaster => _ib.Get(_dbkeyMaster);
IFreeSql _ormCurrent => _ib.Get(object.Equals(_dbkeyCurrent.Value, default(TDBKey)) ? _dbkeyMaster : _dbkeyCurrent.Value);
BaseDbProvider _ormMaster => _ib.Get(_dbkeyMaster) as BaseDbProvider;
BaseDbProvider _ormCurrent => _ib.Get(object.Equals(_dbkeyCurrent.Value, default(TDBKey)) ? _dbkeyMaster : _dbkeyCurrent.Value) as BaseDbProvider;
internal IdleBus<TDBKey, IFreeSql> _ib;
public MultiFreeSql()
@@ -122,32 +121,36 @@ namespace net50_webapi_idlebus
_ib.Notice += (_, __) => { };
}
public IAdo Ado => _ormCurrent.Ado;
public IAop Aop => _ormCurrent.Aop;
public ICodeFirst CodeFirst => _ormCurrent.CodeFirst;
public IDbFirst DbFirst => _ormCurrent.DbFirst;
public GlobalFilter GlobalFilter => _ormCurrent.GlobalFilter;
public void Dispose() => _ib.Dispose();
public override IAdo Ado => _ormCurrent.Ado;
public override IAop Aop => _ormCurrent.Aop;
public override ICodeFirst CodeFirst => _ormCurrent.CodeFirst;
public override IDbFirst DbFirst => _ormCurrent.DbFirst;
public override GlobalFilter GlobalFilter => _ormCurrent.GlobalFilter;
public override void Dispose() => _ib.Dispose();
public void Transaction(Action handler) => _ormCurrent.Transaction(handler);
public void Transaction(IsolationLevel isolationLevel, Action handler) => _ormCurrent.Transaction(isolationLevel, handler);
public override CommonExpression InternalCommonExpression => _ormCurrent.InternalCommonExpression;
public override CommonUtils InternalCommonUtils => _ormCurrent.InternalCommonUtils;
public ISelect<T1> Select<T1>() where T1 : class => _ormCurrent.Select<T1>();
public ISelect<T1> Select<T1>(object dywhere) where T1 : class => Select<T1>().WhereDynamic(dywhere);
public IDelete<T1> Delete<T1>() where T1 : class => _ormCurrent.Delete<T1>();
public IDelete<T1> Delete<T1>(object dywhere) where T1 : class => Delete<T1>().WhereDynamic(dywhere);
public IUpdate<T1> Update<T1>() where T1 : class => _ormCurrent.Update<T1>();
public IUpdate<T1> Update<T1>(object dywhere) where T1 : class => Update<T1>().WhereDynamic(dywhere);
public IInsert<T1> Insert<T1>() where T1 : class => _ormCurrent.Insert<T1>();
public IInsert<T1> Insert<T1>(T1 source) where T1 : class => Insert<T1>().AppendData(source);
public IInsert<T1> Insert<T1>(T1[] source) where T1 : class => Insert<T1>().AppendData(source);
public IInsert<T1> Insert<T1>(List<T1> source) where T1 : class => Insert<T1>().AppendData(source);
public IInsert<T1> Insert<T1>(IEnumerable<T1> source) where T1 : class => Insert<T1>().AppendData(source);
public IInsertOrUpdate<T1> InsertOrUpdate<T1>() where T1 : class => _ormCurrent.InsertOrUpdate<T1>();
public override ISelect<T1> CreateSelectProvider<T1>(object dywhere)
{
return _ormCurrent.CreateSelectProvider<T1>(dywhere);
}
public override IDelete<T1> CreateDeleteProvider<T1>(object dywhere)
{
return _ormCurrent.CreateDeleteProvider<T1>(dywhere);
}
public override IUpdate<T1> CreateUpdateProvider<T1>(object dywhere)
{
return _ormCurrent.CreateUpdateProvider<T1>(dywhere);
}
public override IInsert<T1> CreateInsertProvider<T1>()
{
return _ormCurrent.CreateInsertProvider<T1>();
}
public override IInsertOrUpdate<T1> CreateInsertOrUpdateProvider<T1>()
{
return _ormCurrent.CreateInsertOrUpdateProvider<T1>();
}
}
public static class MultiFreeSqlExtensions