This commit is contained in:
xuejiaming 2021-08-21 08:51:27 +08:00
parent 16eb64fec0
commit 13faa67bb8
6 changed files with 44 additions and 39 deletions

View File

@ -195,7 +195,7 @@ Oracle | 支持 | 未测试
{ {
op.EnsureCreatedWithOutShardingTable = true; op.EnsureCreatedWithOutShardingTable = true;
op.CreateShardingTableOnStart = true; op.CreateShardingTableOnStart = true;
op.UseShardingDbContextOptions((connection, builder) => builder.UseSqlServer(connection).UseLoggerFactory(efLogger)); op.UseShardingOptionsBuilder((connection, builder) => builder.UseSqlServer(connection).UseLoggerFactory(efLogger));
op.AddShardingTableRoute<SysUserModVirtualTableRoute>(); op.AddShardingTableRoute<SysUserModVirtualTableRoute>();
}); });
@ -206,9 +206,10 @@ Oracle | 支持 | 未测试
// { // {
// op.EnsureCreatedWithOutShardingTable = true; // op.EnsureCreatedWithOutShardingTable = true;
// op.CreateShardingTableOnStart = true; // op.CreateShardingTableOnStart = true;
// op.UseShardingConnOptions((connection, builder) => builder.UseSqlServer(connection).UseLoggerFactory(efLogger));
// //不支持mars额外加一条字符串的 // //不支持mars额外加一条字符串的
// op.UseShardingConnStrOptions((connstr, builder) => builder.UseSqlServer(connstr).UseLoggerFactory(efLogger)); // op.UseShardingOptionsBuilder(
// (connection, builder) => builder.UseSqlServer(connection).UseLoggerFactory(efLogger),
// (connString, builder) => builder.UseSqlServer(connString).UseLoggerFactory(efLogger));
// op.AddShardingTableRoute<SysUserModVirtualTableRoute>(); // op.AddShardingTableRoute<SysUserModVirtualTableRoute>();
// }); // });
} }
@ -348,9 +349,10 @@ AbstractSimpleShardingYearKeyLongVirtualTableRoute |按时间戳 |yyyy | `>,>=,<
// { // {
// op.EnsureCreatedWithOutShardingTable = true; // op.EnsureCreatedWithOutShardingTable = true;
// op.CreateShardingTableOnStart = true; // op.CreateShardingTableOnStart = true;
// op.UseShardingConnOptions((connection, builder) => builder.UseSqlServer(connection).UseLoggerFactory(efLogger));
// //不支持mars额外加一条字符串的 // //不支持mars额外加一条字符串的
// op.UseShardingConnStrOptions((connstr, builder) => builder.UseSqlServer(connstr).UseLoggerFactory(efLogger)); // op.UseShardingOptionsBuilder(
// (connection, builder) => builder.UseSqlServer(connection).UseLoggerFactory(efLogger),
// (connString, builder) => builder.UseSqlServer(connString).UseLoggerFactory(efLogger));
// op.AddShardingTableRoute<SysUserModVirtualTableRoute>(); // op.AddShardingTableRoute<SysUserModVirtualTableRoute>();
// }); // });
``` ```

View File

@ -1,8 +1,8 @@
:start :start
::定义版本 ::定义版本
set EFCORE2=2.2.0.04 set EFCORE2=2.2.0.05-pre
set EFCORE3=3.2.0.04 set EFCORE3=3.2.0.05-pre
set EFCORE5=5.2.0.04 set EFCORE5=5.2.0.05-pre
::删除所有bin与obj下的文件 ::删除所有bin与obj下的文件
@echo off @echo off

View File

@ -26,22 +26,24 @@ namespace Sample.SqlServer
services.AddShardingDbContext<DefaultShardingDbContext, DefaultTableDbContext>( services.AddShardingDbContext<DefaultShardingDbContext, DefaultTableDbContext>(
o => o.UseSqlServer("Data Source=localhost;Initial Catalog=ShardingCoreDBxx2;Integrated Security=True;MultipleActiveResultSets=True;") o => o.UseSqlServer("Data Source=localhost;Initial Catalog=ShardingCoreDBxx2;Integrated Security=True;MultipleActiveResultSets=True;")
,op => , op =>
{ {
op.EnsureCreatedWithOutShardingTable = true; op.EnsureCreatedWithOutShardingTable = true;
op.CreateShardingTableOnStart = true; op.CreateShardingTableOnStart = true;
op.UseShardingConnOptions((connection, builder) => builder.UseSqlServer(connection).UseLoggerFactory(efLogger)); op.UseShardingOptionsBuilder((connection, builder) => builder.UseSqlServer(connection).UseLoggerFactory(efLogger));
op.AddShardingTableRoute<SysUserModVirtualTableRoute>(); op.AddShardingTableRoute<SysUserModVirtualTableRoute>();
}); });
// //不支持MARS不支持追踪的 ////不支持MARS不支持追踪的
// services.AddShardingDbContext<DefaultShardingDbContext, DefaultTableDbContext>(o => o.UseSqlServer("Data Source=localhost;Initial Catalog=ShardingCoreDBxx2;Integrated Security=True;") //services.AddShardingDbContext<DefaultShardingDbContext, DefaultTableDbContext>(o => o.UseSqlServer("Data Source=localhost;Initial Catalog=ShardingCoreDBxx2;Integrated Security=True;")
// ,op => // , op =>
// { // {
// op.EnsureCreatedWithOutShardingTable = true; // op.EnsureCreatedWithOutShardingTable = true;
// op.CreateShardingTableOnStart = true; // op.CreateShardingTableOnStart = true;
// op.UseShardingConnOptions((connection, builder) => builder.UseSqlServer(connection).UseLoggerFactory(efLogger));
// //不支持mars额外加一条字符串的 // //不支持mars额外加一条字符串的
// op.UseShardingConnStrOptions((connstr, builder) => builder.UseSqlServer(connstr).UseLoggerFactory(efLogger)); // op.UseShardingOptionsBuilder(
// (connection, builder) => builder.UseSqlServer(connection).UseLoggerFactory(efLogger),
// (connString, builder) => builder.UseSqlServer(connString).UseLoggerFactory(efLogger));
// op.AddShardingTableRoute<SysUserModVirtualTableRoute>(); // op.AddShardingTableRoute<SysUserModVirtualTableRoute>();
// }); // });
} }

View File

@ -43,7 +43,7 @@ namespace ShardingCore
//添加创建TActualDbContext 的 创建者 //添加创建TActualDbContext 的 创建者
var config = new ShardingDbContextOptionsBuilderConfig<TShardingDbContext>(shardingConfigOptions.ShardingDbContextConnectionOptionsCreator,shardingConfigOptions.ShardingDbContextStringOptionsCreator); var config = new ShardingDbContextOptionsBuilderConfig<TShardingDbContext>(shardingConfigOptions.SameConnectionConfigure,shardingConfigOptions.NotSupportMARSConfigure);
services.AddSingleton<IShardingDbContextOptionsBuilderConfig, ShardingDbContextOptionsBuilderConfig<TShardingDbContext>>(sp=> config); services.AddSingleton<IShardingDbContextOptionsBuilderConfig, ShardingDbContextOptionsBuilderConfig<TShardingDbContext>>(sp=> config);
//添加创建TActualDbContext创建者 //添加创建TActualDbContext创建者

View File

@ -100,7 +100,7 @@ namespace ShardingCore.Sharding
public DbContext GetDbContext(bool track, string tail) public DbContext GetDbContext(bool track, string tail)
{ {
if (SupportMARS() || !track) if (SupportMARS() || track)
{ {
if (!_dbContextCaches.TryGetValue(tail, out var dbContext)) if (!_dbContextCaches.TryGetValue(tail, out var dbContext))
{ {

View File

@ -25,17 +25,18 @@ namespace ShardingCore
{ {
private readonly Dictionary<Type, Type> _virtualRoutes = new Dictionary<Type, Type>(); private readonly Dictionary<Type, Type> _virtualRoutes = new Dictionary<Type, Type>();
public Action<DbConnection, DbContextOptionsBuilder> ShardingDbContextConnectionOptionsCreator { get; set; } public Action<DbConnection, DbContextOptionsBuilder> SameConnectionConfigure { get; set; }
public Action<string, DbContextOptionsBuilder> NotSupportMARSConfigure { get; set; }
/// <summary>
/// 配置如何创建对应的dbcontext来操作数据如果数据库支持mars则仅需配置sameConnectionConfigure无需配置notSupportMARSConfigure如果配置了notSupportMARSConfigure则表示数据库不支持MARS则查询将无法正常追踪需要手动attach
/// </summary>
/// <param name="sameConnectionConfigure">dbconnection下如何配置</param>
/// <param name="notSupportMARSConfigure">链接字符串下如何配置</param>
public void UseShardingConnOptions(Action<DbConnection, DbContextOptionsBuilder> shardingDbContextOptionsCreator) public void UseShardingOptionsBuilder(Action<DbConnection, DbContextOptionsBuilder> sameConnectionConfigure, Action<string, DbContextOptionsBuilder> notSupportMARSConfigure = null)
{ {
ShardingDbContextConnectionOptionsCreator = shardingDbContextOptionsCreator ?? throw new ArgumentNullException(nameof(shardingDbContextOptionsCreator)); SameConnectionConfigure = sameConnectionConfigure??throw new ArgumentNullException(nameof(sameConnectionConfigure));
} NotSupportMARSConfigure = notSupportMARSConfigure;
public Action<string, DbContextOptionsBuilder> ShardingDbContextStringOptionsCreator { get; set; }
public void UseShardingConnStrOptions(Action<string, DbContextOptionsBuilder> shardingDbContextOptionsCreator)
{
ShardingDbContextStringOptionsCreator = shardingDbContextOptionsCreator ?? throw new ArgumentNullException(nameof(shardingDbContextOptionsCreator));
} }