55using System . Threading . Tasks ;
66using Microsoft . AspNetCore . Mvc ;
77using Microsoft . EntityFrameworkCore ;
8+ using Microsoft . EntityFrameworkCore . Storage ;
89using Microsoft . Extensions . Logging ;
910using Sample . SqlServer . DbContexts ;
1011using Sample . SqlServer . Domain . Entities ;
1112using ShardingCore . Core . QueryRouteManagers . Abstractions ;
1213using ShardingCore . DbContexts . VirtualDbContexts ;
1314using ShardingCore . Extensions ;
15+ using Z . EntityFramework . Plus ;
1416
1517namespace Sample . SqlServer . Controllers
1618{
@@ -26,7 +28,7 @@ public class ValuesController : ControllerBase
2628 private readonly DefaultShardingDbContext _defaultTableDbContext ;
2729 private readonly IShardingRouteManager _shardingRouteManager ;
2830
29- public ValuesController ( DefaultShardingDbContext defaultTableDbContext , IShardingRouteManager shardingRouteManager )
31+ public ValuesController ( DefaultShardingDbContext defaultTableDbContext , IShardingRouteManager shardingRouteManager )
3032 {
3133 _defaultTableDbContext = defaultTableDbContext ;
3234 _shardingRouteManager = shardingRouteManager ;
@@ -36,17 +38,17 @@ public ValuesController(DefaultShardingDbContext defaultTableDbContext,ISharding
3638 public async Task < IActionResult > Get ( )
3739 {
3840 var sql = from ut in _defaultTableDbContext . Set < SysTest > ( )
39- join u in _defaultTableDbContext . Set < SysUserMod > ( )
40- on ut . UserId equals u . Id
41- select new
42- {
43- ut . Id ,
44- userId = u . Id
45- } ;
46- var listAsync = await sql . ToListAsync ( ) ;
41+ join u in _defaultTableDbContext . Set < SysUserMod > ( )
42+ on ut . UserId equals u . Id
43+ select new
44+ {
45+ ut . Id ,
46+ userId = u . Id
47+ } ;
48+ var listAsync = await sql . ToListAsync ( ) ;
4749 var resultx112331tt = await _defaultTableDbContext . Set < SysTest > ( ) . CountAsync ( ) ;
4850 var resultx112331 = await _defaultTableDbContext . Set < SysUserMod > ( ) . CountAsync ( ) ;
49- var resultx11233411 = _defaultTableDbContext . Set < SysUserMod > ( ) . Count ( ) ;
51+ var resultx11233411 = _defaultTableDbContext . Set < SysUserMod > ( ) . Count ( ) ;
5052 var resultx11231 = await _defaultTableDbContext . Set < SysUserMod > ( ) . Where ( o => o . Age == 198198 ) . Select ( o => o . Id ) . ContainsAsync ( "1981" ) ;
5153 var resultx1121 = await _defaultTableDbContext . Set < SysUserMod > ( ) . Where ( o => o . Id == "198" ) . SumAsync ( o => o . Age ) ;
5254 var resultx111 = await _defaultTableDbContext . Set < SysUserMod > ( ) . FirstOrDefaultAsync ( o => o . Id == "198" ) ;
@@ -88,11 +90,11 @@ on ut.UserId equals u.Id
8890 return Ok ( ) ;
8991 }
9092 [ HttpGet ]
91- public async Task < IActionResult > Get1 ( [ FromQuery ] int p , [ FromQuery ] int s )
93+ public async Task < IActionResult > Get1 ( [ FromQuery ] int p , [ FromQuery ] int s )
9294 {
9395 Stopwatch sp = new Stopwatch ( ) ;
9496 sp . Start ( ) ;
95- var shardingPageResultAsync = await _defaultTableDbContext . Set < SysUserMod > ( ) . OrderBy ( o=> o . Age ) . ToShardingPageAsync ( p , s ) ;
97+ var shardingPageResultAsync = await _defaultTableDbContext . Set < SysUserMod > ( ) . OrderBy ( o => o . Age ) . ToShardingPageAsync ( p , s ) ;
9698 sp . Stop ( ) ;
9799 return Ok ( new
98100 {
@@ -101,17 +103,59 @@ public async Task<IActionResult> Get1([FromQuery] int p,[FromQuery]int s)
101103 } ) ;
102104 }
103105 [ HttpGet ]
104- public IActionResult Get2 ( [ FromQuery ] int p , [ FromQuery ] int s )
106+ public IActionResult Get2 ( [ FromQuery ] int p , [ FromQuery ] int s )
105107 {
106108 Stopwatch sp = new Stopwatch ( ) ;
107109 sp . Start ( ) ;
108- var shardingPageResultAsync = _defaultTableDbContext . Set < SysUserMod > ( ) . OrderBy ( o=> o . Age ) . ToShardingPage ( p , s ) ;
110+ var shardingPageResultAsync = _defaultTableDbContext . Set < SysUserMod > ( ) . OrderBy ( o => o . Age ) . ToShardingPage ( p , s ) ;
109111 sp . Stop ( ) ;
110112 return Ok ( new
111113 {
112114 sp . ElapsedMilliseconds ,
113115 shardingPageResultAsync
114116 } ) ;
115117 }
118+ [ HttpGet ]
119+ public IActionResult Get3 ( )
120+ {
121+
122+ var dbContext2s = _defaultTableDbContext . BulkShardingExpression < SysUserMod > ( o => o . Age > 100 ) ;
123+ using ( var tran = _defaultTableDbContext . Database . BeginTransaction ( ) )
124+ {
125+ dbContext2s . ForEach ( dbContext =>
126+ {
127+ dbContext . Set < SysUserMod > ( ) . Where ( o => o . Age > 100 ) . Update ( o => new SysUserMod ( )
128+ {
129+ AgeGroup = 1000
130+ } ) ;
131+ } ) ;
132+ _defaultTableDbContext . SaveChanges ( ) ;
133+ tran . Commit ( ) ;
134+ }
135+ var list = new List < SysUserMod > ( ) ;
136+ var dbContexts = _defaultTableDbContext . BulkShardingEnumerable ( list ) ;
137+
138+ using ( var tran = _defaultTableDbContext . Database . BeginTransaction ( ) )
139+ {
140+ dbContexts . ForEach ( kv =>
141+ {
142+ kv . Key . BulkInsert ( kv . Value ) ;
143+ } ) ;
144+ dbContexts . ForEach ( kv =>
145+ {
146+ kv . Key . BulkDelete ( kv . Value ) ;
147+ } ) ;
148+ dbContexts . ForEach ( kv =>
149+ {
150+ kv . Key . BulkUpdate ( kv . Value ) ;
151+ } ) ;
152+ _defaultTableDbContext . SaveChanges ( ) ;
153+ tran . Commit ( ) ;
154+ }
155+
156+
157+ return Ok ( ) ;
158+ }
159+
116160 }
117- }
161+ }
0 commit comments