1+ using Microsoft . EntityFrameworkCore ;
2+ using Sample . MySQLDataSourceOnly . Domain ;
3+ using ShardingCore ;
4+
5+ var builder = WebApplication . CreateBuilder ( args ) ;
6+
7+ // Add services to the container.
8+
9+ builder . Services . AddControllers ( ) ;
10+ // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
11+ builder . Services . AddEndpointsApiExplorer ( ) ;
12+ builder . Services . AddSwaggerGen ( ) ;
13+
14+
15+
16+ builder . Services . AddShardingDbContext < MyDbContext > ( )
17+ . UseRouteConfig ( o =>
18+ {
19+ //o.CreateShardingTableOnStart = true;
20+ //o.EnsureCreatedWithOutShardingTable = true;
21+ o . AddShardingDataSourceRoute < SysUserVirtualDataSourceRoute > ( ) ;
22+ } )
23+ . UseConfig ( ( sp , op ) =>
24+ {
25+ var loggerFactory = sp . ApplicationServiceProvider . GetService < ILoggerFactory > ( ) ;
26+ //op.ConfigId = "c1";
27+ op . UseShardingQuery ( ( conStr , builder ) =>
28+ {
29+ builder . UseMySql ( conStr , new MySqlServerVersion ( new Version ( ) ) )
30+ . UseLoggerFactory ( loggerFactory ) . EnableSensitiveDataLogging ( ) ;
31+ } ) ;
32+ op . UseShardingTransaction ( ( connection , builder ) =>
33+ {
34+ builder . UseMySql ( connection , new MySqlServerVersion ( new Version ( ) ) )
35+ . UseLoggerFactory ( loggerFactory ) . EnableSensitiveDataLogging ( ) ; ;
36+ } ) ;
37+ //op.ReplaceTableEnsureManager(sp => new SqlServerTableEnsureManager<MyDbContext>());
38+ op . AddDefaultDataSource ( "A" , @"server=127.0.0.1;port=3306;database=onlyds1;userid=root;password=root;" ) ;
39+ op . AddExtraDataSource ( sp =>
40+ {
41+ return new Dictionary < string , string > ( )
42+ {
43+ {
44+ "B" ,
45+ @"server=127.0.0.1;port=3306;database=onlyds2;userid=root;password=root;"
46+ } ,
47+ {
48+ "C" ,
49+ @"server=127.0.0.1;port=3306;database=onlyds3;userid=root;password=root;"
50+ } ,
51+ } ;
52+ } ) ;
53+ } ) . AddShardingCore ( ) ;
54+
55+ var app = builder . Build ( ) ;
56+
57+ // Configure the HTTP request pipeline.
58+ if ( app . Environment . IsDevelopment ( ) )
59+ {
60+ app . UseSwagger ( ) ;
61+ app . UseSwaggerUI ( ) ;
62+ }
63+
64+ app . UseHttpsRedirection ( ) ;
65+
66+ app . UseAuthorization ( ) ;
67+
68+ app . MapControllers ( ) ;
69+ app . Services . UseAutoTryCompensateTable ( ) ;
70+ // using (var serviceScope = app.Services.CreateScope())
71+ // {
72+ // var myDbContext = serviceScope.ServiceProvider.GetService<MyDbContext>();
73+ // myDbContext.Database.EnsureCreated();
74+ // myDbContext.Add(new SysUser() { Id = "1", Area = "A", Name = "name" });
75+ // myDbContext.SaveChanges();
76+ // }
77+ app . Run ( ) ;
0 commit comments