Skip to content

Commit 683aef8

Browse files
committed
添加捐赠和部分使用代码
1 parent 022e063 commit 683aef8

File tree

9 files changed

+67
-15
lines changed

9 files changed

+67
-15
lines changed

README-zh.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
---
1313
- [Gitee](https://gitee.com/dotnetchina/sharding-core) 国内镜像
1414

15+
- [捐赠](#捐赠)
1516

1617
## 社区合作伙伴和赞助商
1718

@@ -1085,6 +1086,10 @@ return optionsBuilder.ReplaceService<IModelCacheKeyFactory, ShardingModelCacheKe
10851086

10861087
凭借各大开源生态圈提供的优秀代码和思路才有的这个框架,希望可以为.Net生态提供一份微薄之力,该框架本人会一直长期维护,有大神技术支持可以联系下方方式欢迎star :)
10871088

1089+
# 捐赠
1090+
<img src="./imgs/zfb.jpg" title="JetBrains" width=200 />
1091+
<img src="./imgs/wx.jpg" title="JetBrains" width=222 />
1092+
10881093
[博客](https://www.cnblogs.com/xuejiaming)
10891094
10901095
QQ:771630778

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ high performance lightweight solution for efcore sharding table and sharding dat
1313
---
1414
- [Gitee](https://gitee.com/dotnetchina/sharding-core) 国内镜像
1515

16+
- [捐赠](#捐赠)
1617

1718
## Community Partners and Sponsors
1819

@@ -1101,6 +1102,9 @@ return optionsBuilder.ReplaceService<IModelCacheKeyFactory, ShardingModelCacheKe
11011102

11021103
凭借各大开源生态圈提供的优秀代码和思路才有的这个框架,希望可以为.Net生态提供一份微薄之力,该框架本人会一直长期维护,有大神技术支持可以联系下方方式欢迎star :)
11031104

1105+
# 捐赠
1106+
<img src="./imgs/zfb.jpg" title="JetBrains" width=200 />
1107+
<img src="./imgs/wx.jpg" title="JetBrains" width=222 />
11041108
[博客](https://www.cnblogs.com/xuejiaming)
11051109
11061110
QQ:771630778

imgs/wx.jpg

62.6 KB
Loading

imgs/zfb.jpg

121 KB
Loading
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
using System.Linq.Expressions;
2+
using Microsoft.EntityFrameworkCore;
3+
using Microsoft.EntityFrameworkCore.Internal;
4+
using Microsoft.EntityFrameworkCore.Query;
5+
using ShardingCore.Extensions;
6+
7+
namespace Sample.MySql.Controllers;
8+
9+
public class DbSetDiscoverExpressionVisitor<TEntity>:ExpressionVisitor where TEntity:class
10+
{
11+
private readonly DbContext _dbContext;
12+
public DbSet<TEntity> DbSet { get; private set; }
13+
14+
public DbSetDiscoverExpressionVisitor(DbContext dbContext)
15+
{
16+
_dbContext = dbContext;
17+
}
18+
19+
protected override Expression VisitExtension(Expression node)
20+
{
21+
if (node is QueryRootExpression queryRootExpression)
22+
{
23+
var dbContextDependencies =
24+
typeof(DbContext).GetTypePropertyValue(_dbContext, "DbContextDependencies") as IDbContextDependencies;
25+
var targetIQ =
26+
((IDbSetCache)_dbContext).GetOrAddSet(dbContextDependencies.SetSource, queryRootExpression.EntityType.ClrType);
27+
DbSet = (DbSet<TEntity>)targetIQ;
28+
}
29+
return base.VisitExtension(node);
30+
}
31+
}

samples/Sample.MySql/Controllers/WeatherForecastController.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,18 @@ public WeatherForecastController(DefaultShardingDbContext defaultTableDbContext,
3232
[HttpGet]
3333
public async Task<IActionResult> Get()
3434
{
35+
OtherDbContext.CurrentId = "";
36+
var myUsers0 = _otherDbContext.MyUsers.ToList();
37+
OtherDbContext.CurrentId = "123";
38+
var myUsers1 = _otherDbContext.MyUsers.ToList();
39+
OtherDbContext.CurrentId = "456";
40+
var myUsers2= _otherDbContext.MyUsers.ToList();
41+
42+
// var sysUserModQueryable = _otherDbContext.MyUsers.Where(o => o.Id == "2");
43+
// var dbSetDiscoverExpressionVisitor = new DbSetDiscoverExpressionVisitor<MyUser>(_otherDbContext);
44+
// dbSetDiscoverExpressionVisitor.Visit(sysUserModQueryable.Expression);
45+
// var myUsers = dbSetDiscoverExpressionVisitor.DbSet;
46+
// Console.WriteLine("------------");
3547
// using (var tran = _defaultTableDbContext.Database.BeginTransaction())
3648
// {
3749

samples/Sample.MySql/Startup.cs

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,15 @@ public void ConfigureServices(IServiceCollection services)
7474
{
7575
builder.UseMySql(conStr, new MySqlServerVersion(new Version()))
7676
.UseLoggerFactory(efLogger)
77+
.EnableSensitiveDataLogging()
7778
.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
7879
});
7980
o.UseShardingTransaction((connection, builder) =>
8081
{
8182
builder
8283
.UseMySql(connection, new MySqlServerVersion(new Version()))
8384
.UseLoggerFactory(efLogger)
85+
.EnableSensitiveDataLogging()
8486
.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
8587
});
8688
o.UseShardingMigrationConfigure(b =>
@@ -107,13 +109,15 @@ public void ConfigureServices(IServiceCollection services)
107109
{
108110
builder.UseMySql(conStr, new MySqlServerVersion(new Version()))
109111
.UseLoggerFactory(efLogger)
112+
.EnableSensitiveDataLogging()
110113
.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
111114
});
112115
o.UseShardingTransaction((connection, builder) =>
113116
{
114117
builder
115118
.UseMySql(connection, new MySqlServerVersion(new Version()))
116119
.UseLoggerFactory(efLogger)
120+
.EnableSensitiveDataLogging()
117121
.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
118122
});
119123
o.AddDefaultDataSource("ds0",
@@ -123,20 +127,6 @@ public void ConfigureServices(IServiceCollection services)
123127
{ "ds1", "server=127.0.0.1;port=3306;database=dbdbd1;userid=root;password=root;" },
124128
{ "ds2", "server=127.0.0.1;port=3306;database=dbdbd2;userid=root;password=root;" }
125129
});
126-
// o.AddReadWriteSeparation(sp =>
127-
// {
128-
// return new Dictionary<string, IEnumerable<string>>()
129-
// {
130-
// {
131-
// "ds0",
132-
// new[]
133-
// {
134-
// "server=127.0.0.1;port=3306;database=dbdbd0_0;userid=root;password=root;"
135-
// }
136-
// }
137-
// };
138-
// }, defaultEnable: true, readStrategyEnum: ReadStrategyEnum.Loop,
139-
// readConnStringGetStrategy: ReadConnStringGetStrategyEnum.LatestEveryTime);
140130
o.UseShardingMigrationConfigure(b =>
141131
{
142132
b.ReplaceService<IMigrationsSqlGenerator, ShardingMySqlMigrationsSqlGenerator>();

samples/Sample.MySql/appsettings.Development.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"Logging": {
33
"LogLevel": {
4-
"Default": "Debug",
4+
"Default": "Information",
55
"Microsoft": "Warning",
66
"Microsoft.Hosting.Lifetime": "Information"
77
}

samples/Sample.MySql/multi/OtherDbContext.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,15 @@ public OtherDbContext(DbContextOptions<OtherDbContext> options) : base(options)
1212
{
1313
}
1414

15+
public static string CurrentId;
16+
public string CID => CurrentId;
17+
public bool HasCID => !string.IsNullOrWhiteSpace(CID);
18+
protected override void OnModelCreating(ModelBuilder modelBuilder)
19+
{
20+
base.OnModelCreating(modelBuilder);
21+
modelBuilder.Entity<MyUser>()
22+
.HasQueryFilter(o => !HasCID || o.Id == CID);
23+
}
24+
1525
public IRouteTail RouteTail { get; set; }
1626
}

0 commit comments

Comments
 (0)