提交测试代码
This commit is contained in:
parent
5d3aa6dbc2
commit
78a59dd181
|
@ -0,0 +1,58 @@
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
|
namespace Sample.AutoCreateIfPresent.Controllers;
|
||||||
|
|
||||||
|
[ApiController]
|
||||||
|
[Route("[controller]/[action]")]
|
||||||
|
public class TestController : ControllerBase
|
||||||
|
{
|
||||||
|
private readonly ILogger<WeatherForecastController> _logger;
|
||||||
|
private readonly DefaultDbContext _defaultDbContext;
|
||||||
|
|
||||||
|
public TestController(ILogger<WeatherForecastController> logger,DefaultDbContext defaultDbContext)
|
||||||
|
{
|
||||||
|
_logger = logger;
|
||||||
|
_defaultDbContext = defaultDbContext;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IActionResult HelloWorld()
|
||||||
|
{
|
||||||
|
return Ok("hello world");
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<IActionResult> Query()
|
||||||
|
{
|
||||||
|
var list =await _defaultDbContext.Set<OrderByHour>().ToListAsync();
|
||||||
|
return Ok(list);
|
||||||
|
}
|
||||||
|
public async Task<IActionResult> Insert()
|
||||||
|
{
|
||||||
|
var orderByHour = new OrderByHour();
|
||||||
|
orderByHour.Id = Guid.NewGuid().ToString("n");
|
||||||
|
orderByHour.Name=$"Name:"+ Guid.NewGuid().ToString("n");
|
||||||
|
var dateTime = DateTime.Now;
|
||||||
|
orderByHour.CreateTime = dateTime.AddHours(new Random().Next(1, 20));
|
||||||
|
await _defaultDbContext.AddAsync(orderByHour);
|
||||||
|
await _defaultDbContext.SaveChangesAsync();
|
||||||
|
return Ok();
|
||||||
|
}
|
||||||
|
public async Task<IActionResult> Query1()
|
||||||
|
{
|
||||||
|
var list = await _defaultDbContext.Set<AreaDevice>().ToListAsync();
|
||||||
|
return Ok(list);
|
||||||
|
}
|
||||||
|
public async Task<IActionResult> Insert1()
|
||||||
|
{
|
||||||
|
var list = new List<string>(){"A","B","C","D","E", "F", "G" };
|
||||||
|
var orderByHour = new AreaDevice();
|
||||||
|
orderByHour.Id = Guid.NewGuid().ToString("n");
|
||||||
|
orderByHour.Area = list[new Random().Next(0, list.Count)];
|
||||||
|
var dateTime = DateTime.Now;
|
||||||
|
orderByHour.CreateTime = dateTime.AddHours(new Random().Next(1, 20));
|
||||||
|
await _defaultDbContext.AddAsync(orderByHour);
|
||||||
|
await _defaultDbContext.SaveChangesAsync();
|
||||||
|
return Ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,3 +1,4 @@
|
||||||
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@ using ShardingCore.Core.VirtualRoutes.TableRoutes.Abstractions;
|
||||||
using ShardingCore.Exceptions;
|
using ShardingCore.Exceptions;
|
||||||
using ShardingCore.Extensions;
|
using ShardingCore.Extensions;
|
||||||
using ShardingCore.TableCreator;
|
using ShardingCore.TableCreator;
|
||||||
|
using ShardingCore.TableExists;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @Author: xjm
|
* @Author: xjm
|
||||||
|
@ -43,6 +44,11 @@ namespace Sample.AutoCreateIfPresent
|
||||||
_shardingTableCreator = shardingTableCreator;
|
_shardingTableCreator = shardingTableCreator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override string ShardingKeyToTail(object shardingKey)
|
||||||
|
{
|
||||||
|
var dateTime = (DateTime)shardingKey;
|
||||||
|
return ShardingKeyFormat(dateTime);
|
||||||
|
}
|
||||||
private string ShardingKeyFormat(DateTime dateTime)
|
private string ShardingKeyFormat(DateTime dateTime)
|
||||||
{
|
{
|
||||||
var tail = $"{dateTime:yyyyMMddHH}";
|
var tail = $"{dateTime:yyyyMMddHH}";
|
||||||
|
@ -50,12 +56,6 @@ namespace Sample.AutoCreateIfPresent
|
||||||
return tail;
|
return tail;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string ShardingKeyToTail(object shardingKey)
|
|
||||||
{
|
|
||||||
var dateTime = (DateTime)shardingKey;
|
|
||||||
return ShardingKeyFormat(dateTime);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 如果你是非mysql数据库请自行实现这个方法返回当前类在数据库已经存在的后缀
|
/// 如果你是非mysql数据库请自行实现这个方法返回当前类在数据库已经存在的后缀
|
||||||
/// 仅启动时调用
|
/// 仅启动时调用
|
||||||
|
@ -134,6 +134,7 @@ namespace Sample.AutoCreateIfPresent
|
||||||
if (!_tails.TryGetValue(shardingKeyToTail,out var _))
|
if (!_tails.TryGetValue(shardingKeyToTail,out var _))
|
||||||
{
|
{
|
||||||
var virtualTable = _virtualTableManager.GetVirtualTable(typeof(OrderByHour));
|
var virtualTable = _virtualTableManager.GetVirtualTable(typeof(OrderByHour));
|
||||||
|
//必须先执行AddPhysicTable在进行CreateTable
|
||||||
_virtualTableManager.AddPhysicTable(virtualTable, new DefaultPhysicTable(virtualTable, shardingKeyToTail));
|
_virtualTableManager.AddPhysicTable(virtualTable, new DefaultPhysicTable(virtualTable, shardingKeyToTail));
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
|
@ -16,8 +16,8 @@ var builder = WebApplication.CreateBuilder(args);
|
||||||
|
|
||||||
builder.Services.AddControllers();
|
builder.Services.AddControllers();
|
||||||
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
|
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
|
||||||
builder.Services.AddEndpointsApiExplorer();
|
// builder.Services.AddEndpointsApiExplorer();
|
||||||
builder.Services.AddSwaggerGen();
|
// builder.Services.AddSwaggerGen();
|
||||||
builder.Services.AddShardingDbContext<DefaultDbContext>()
|
builder.Services.AddShardingDbContext<DefaultDbContext>()
|
||||||
.AddEntityConfig(o =>
|
.AddEntityConfig(o =>
|
||||||
{
|
{
|
||||||
|
@ -30,7 +30,7 @@ builder.Services.AddShardingDbContext<DefaultDbContext>()
|
||||||
.AddConfig(o =>
|
.AddConfig(o =>
|
||||||
{
|
{
|
||||||
o.ConfigId = "c1";
|
o.ConfigId = "c1";
|
||||||
o.AddDefaultDataSource("ds0", "server=127.0.0.1;port=3306;database=shardingTest;userid=root;password=L6yBtV6qNENrwBy7;");
|
o.AddDefaultDataSource("ds0", "server=127.0.0.1;port=3306;database=shardingTest;userid=root;password=root;");
|
||||||
o.UseShardingQuery((conn, b) =>
|
o.UseShardingQuery((conn, b) =>
|
||||||
{
|
{
|
||||||
b.UseMySql(conn, new MySqlServerVersion(new Version())).UseLoggerFactory(efLogger);
|
b.UseMySql(conn, new MySqlServerVersion(new Version())).UseLoggerFactory(efLogger);
|
||||||
|
@ -46,8 +46,8 @@ var app = builder.Build();
|
||||||
// Configure the HTTP request pipeline.
|
// Configure the HTTP request pipeline.
|
||||||
if (app.Environment.IsDevelopment())
|
if (app.Environment.IsDevelopment())
|
||||||
{
|
{
|
||||||
app.UseSwagger();
|
// app.UseSwagger();
|
||||||
app.UseSwaggerUI();
|
// app.UseSwaggerUI();
|
||||||
}
|
}
|
||||||
app.Services.GetRequiredService<IShardingBootstrapper>().Start();
|
app.Services.GetRequiredService<IShardingBootstrapper>().Start();
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@ namespace ShardingCore.Core.VirtualRoutes.TableRoutes
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
IPhysicTable RouteWithValue(List<IPhysicTable> allPhysicTables, object shardingKey);
|
IPhysicTable RouteWithValue(List<IPhysicTable> allPhysicTables, object shardingKey);
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取所有的目前数据库存在的尾巴
|
/// 获取所有的目前数据库存在的尾巴,仅启动时调用
|
||||||
/// get all tails in the db
|
/// get all tails in the db
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
|
|
|
@ -77,6 +77,7 @@ namespace ShardingCore.VirtualRoutes.Abstractions
|
||||||
var allVirtualDataSources = virtualDataSourceManager.GetAllVirtualDataSources();
|
var allVirtualDataSources = virtualDataSourceManager.GetAllVirtualDataSources();
|
||||||
var now = DateTime.Now.AddMinutes(IncrementMinutes);
|
var now = DateTime.Now.AddMinutes(IncrementMinutes);
|
||||||
var tail = ConvertNowToTail(now);
|
var tail = ConvertNowToTail(now);
|
||||||
|
//必须先执行AddPhysicTable在进行CreateTable
|
||||||
virtualTableManager.AddPhysicTable(virtualTable, new DefaultPhysicTable(virtualTable, tail));
|
virtualTableManager.AddPhysicTable(virtualTable, new DefaultPhysicTable(virtualTable, tail));
|
||||||
foreach (var virtualDataSource in allVirtualDataSources)
|
foreach (var virtualDataSource in allVirtualDataSources)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue