using System.Reflection;
using System.Text;
using DS.Module.Core;
using DS.Module.Core.Modules;
using DS.WMS.Core.System.Entity;
using Microsoft.AspNetCore.Hosting;
using Newtonsoft.Json;
using SqlSugar;
namespace DS.WMS.Core.DBSeed;
///
/// 初始化数据库
///
public class DBSeedModule : DSAppModule
{
private static string SeedDataFolder = "DBInitData.json/{0}.tsv";
SqlSugar.ISqlSugarClient db;
public override void ApplicationInitialization(ApplicationContext context)
{
var builder = context.GetApplicationBuilder();
var env = DSIocManage.Instance.GetService();
// var env = context.ServiceProvider.GetService();
var basePath = env.WebRootPath;
SeedDataFolder = Path.Combine(basePath, SeedDataFolder);
try
{
db = context.ServiceProvider.GetService(typeof(ISqlSugarClient)) as ISqlSugarClient;
// 创建数据库
Console.WriteLine($"Create Database...");
db.DbMaintenance.CreateDatabase();
Console.WriteLine($"Database created successfully!");
// 创建数据库表,遍历指定命名空间下的class,
// 注意不要把其他命名空间下的也添加进来。
Console.WriteLine("Create Tables...");
var modelTypes = from t in Assembly.GetExecutingAssembly().GetTypes()
where t.IsClass && t.Namespace == "DS.WMS.Core.System.Entity"
select t;
modelTypes.ToList().ForEach(t =>
{
if (!db.DbMaintenance.IsAnyTable(t.Name))
{
Console.WriteLine(t.Name);
db.CodeFirst.InitTables(t);
}
});
Console.WriteLine("Tables created successfully!");
Console.WriteLine();
Console.WriteLine($"Seeding database data...");
#region SysUser
if (!db.Queryable().Any())
{
var temp = JsonConvert.DeserializeObject>(
FileHelper.ReadFile(string.Format(SeedDataFolder, "SysUser"), Encoding.UTF8));
db.Insertable(temp).ExecuteCommand();
Console.WriteLine("Table:SysUser seed success!");
}
else
{
Console.WriteLine("Table:SysUser already exists...");
}
#endregion
#region SysRole
if (!db.Queryable().Any())
{
var temp = JsonConvert.DeserializeObject>(
FileHelper.ReadFile(string.Format(SeedDataFolder, "SysRole"), Encoding.UTF8));
db.Insertable(temp).ExecuteCommand();
Console.WriteLine("Table:SysRole seed success!");
}
else
{
Console.WriteLine("Table:SysRole already exists...");
}
#endregion
#region SysPermission
if (!db.Queryable().Any())
{
var temp = JsonConvert.DeserializeObject>(
FileHelper.ReadFile(string.Format(SeedDataFolder, "SysPermission"),
Encoding.UTF8));
db.Insertable(temp).ExecuteCommand();
Console.WriteLine("Table:SysPermission seed success!");
}
else
{
Console.WriteLine("Table:SysPermission already exists...");
}
#endregion
#region SysRoleUser
if (!db.Queryable().Any())
{
var temp = JsonConvert.DeserializeObject>(
FileHelper.ReadFile(string.Format(SeedDataFolder, "SysRoleUser"),
Encoding.UTF8));
db.Insertable(temp).ExecuteCommand();
Console.WriteLine("Table:SysRoleUser seed success!");
}
else
{
Console.WriteLine("Table:SysRoleUser already exists...");
}
#endregion
#region SysCompany
if (!db.Queryable().Any())
{
var temp = JsonConvert.DeserializeObject>(
FileHelper.ReadFile(string.Format(SeedDataFolder, "SysCompany"),
Encoding.UTF8));
db.Insertable(temp).ExecuteCommand();
Console.WriteLine("Table:SysCompany seed success!");
}
else
{
Console.WriteLine("Table:SysRoleUser already exists...");
}
#endregion
#region SysUserCompany
if (!db.Queryable().Any())
{
var temp = JsonConvert.DeserializeObject>(
FileHelper.ReadFile(string.Format(SeedDataFolder, "SysUserCompany"),
Encoding.UTF8));
db.Insertable(temp).ExecuteCommand();
Console.WriteLine("Table:SysUserCompany seed success!");
}
else
{
Console.WriteLine("Table:SysUserCompany already exists...");
}
#endregion
#region SysRolePermission
if (!db.Queryable().Any())
{
var temp = JsonConvert.DeserializeObject>(
FileHelper.ReadFile(string.Format(SeedDataFolder, "SysRolePermission"),
Encoding.UTF8));
db.Insertable(temp).ExecuteCommand();
Console.WriteLine("Table:SysRolePermission seed success!");
}
else
{
Console.WriteLine("Table:SysRolePermission already exists...");
}
#endregion
#region SysPrint
if (!db.Queryable().Any())
{
var temp = JsonConvert.DeserializeObject>(
FileHelper.ReadFile(string.Format(SeedDataFolder, "SysPrint"),
Encoding.UTF8));
db.Insertable(temp).ExecuteCommand();
Console.WriteLine("Table:SysPrint seed success!");
}
else
{
Console.WriteLine("Table:SysPrint already exists...");
}
#endregion
Console.WriteLine();
}
catch (Exception ex)
{
Console.WriteLine("DBSeed异常:" + ex.ToString());
}
}
}