支持表自动迁移 & 优化ServiceProvider获取 & 包版本升级
This commit is contained in:
parent
0905956926
commit
4518d7d960
@ -10,7 +10,7 @@ namespace Infrastructure
|
||||
/// <summary>
|
||||
/// 服务提供器
|
||||
/// </summary>
|
||||
public static IServiceProvider ServiceProvider => HttpContext?.RequestServices ?? InternalApp.InternalServices.BuildServiceProvider();
|
||||
public static IServiceProvider ServiceProvider => HttpContext?.RequestServices ?? InternalApp.ServiceProvider;
|
||||
/// <summary>
|
||||
/// 获取请求上下文
|
||||
/// </summary>
|
||||
|
||||
36
Infrastructure/Helper/AssemblyUtils.cs
Normal file
36
Infrastructure/Helper/AssemblyUtils.cs
Normal file
@ -0,0 +1,36 @@
|
||||
using Microsoft.Extensions.DependencyModel;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Infrastructure.Helper
|
||||
{
|
||||
public static class AssemblyUtils
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取应用中的所有程序集
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static IEnumerable<Assembly> GetAssemblies()
|
||||
{
|
||||
var compilationLibrary = DependencyContext.Default
|
||||
.CompileLibraries
|
||||
.Where(x => !x.Serviceable && x.Type == "project")
|
||||
.ToList();
|
||||
return compilationLibrary.Select(p => Assembly.Load(new AssemblyName(p.Name)));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取应用中的所有Type
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public static IEnumerable<Type> GetAllTypes()
|
||||
{
|
||||
var assemblies = GetAssemblies();
|
||||
return assemblies.SelectMany(p => p.GetTypes());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -11,6 +11,7 @@
|
||||
<ItemGroup>
|
||||
<PackageReference Include="AspectCore.Abstractions" Version="2.2.0" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Hosting" Version="2.2.7" />
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyModel" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="6.0.0" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||
</ItemGroup>
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using System;
|
||||
|
||||
namespace Infrastructure
|
||||
{
|
||||
@ -9,12 +10,12 @@ namespace Infrastructure
|
||||
/// <summary>
|
||||
/// 应用服务
|
||||
/// </summary>
|
||||
public static IServiceCollection InternalServices;
|
||||
public static IServiceProvider ServiceProvider;
|
||||
|
||||
/// <summary>
|
||||
/// 全局配置构建器
|
||||
/// </summary>
|
||||
public static IConfigurationBuilder ConfigurationBuilder;
|
||||
//public static IConfigurationBuilder ConfigurationBuilder;
|
||||
|
||||
/// <summary>
|
||||
/// 获取Web主机环境
|
||||
@ -24,6 +25,6 @@ namespace Infrastructure
|
||||
/// <summary>
|
||||
/// 获取泛型主机环境
|
||||
/// </summary>
|
||||
public static IHostEnvironment HostEnvironment;
|
||||
//public static IHostEnvironment HostEnvironment;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,53 +0,0 @@
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
|
||||
namespace Infrastructure.Startups
|
||||
{
|
||||
/// <summary>
|
||||
/// Program.cs里面的HostBuilder扩展
|
||||
/// </summary>
|
||||
public static class HostBuilderExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// Web 主机注入
|
||||
/// </summary>
|
||||
/// <param name="hostBuilder">Web主机构建器</param>
|
||||
/// <param name="assemblyName">外部程序集名称,如果HostingStartup存在多个程序集中可以使用;分隔,比如HostStartupLib;HostStartupLib2</param>
|
||||
/// <returns>IWebHostBuilder</returns>
|
||||
public static IWebHostBuilder Init(this IWebHostBuilder hostBuilder, string assemblyName)
|
||||
{
|
||||
hostBuilder.UseSetting(WebHostDefaults.HostingStartupAssembliesKey, assemblyName);
|
||||
return hostBuilder;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 初始化程序扩展
|
||||
/// </summary>
|
||||
/// <param name="builder"></param>
|
||||
public static void UseAppStartup(this IWebHostBuilder hostBuilder)
|
||||
{
|
||||
// 自动装载配置
|
||||
hostBuilder.ConfigureAppConfiguration((hostingContext, config) =>
|
||||
{
|
||||
// 存储环境对象
|
||||
InternalApp.HostEnvironment = (IHostEnvironment)hostingContext.HostingEnvironment;
|
||||
|
||||
// 加载配置
|
||||
//InternalApp.AddConfigureFiles(config, InternalApp.WebHostEnvironment);
|
||||
});
|
||||
// 自动注入 AddApp() 服务
|
||||
hostBuilder.ConfigureServices((services) =>
|
||||
{
|
||||
// 注册 Startup 过滤器
|
||||
//services.AddTransient<IStartupFilter, StartupFilter>();
|
||||
|
||||
// 添加全局配置和存储服务提供器
|
||||
InternalApp.InternalServices = services;
|
||||
|
||||
// 初始化应用服务
|
||||
//services.AddApp();
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,36 +0,0 @@
|
||||
using Infrastructure.Startups;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
|
||||
//通过HostingStartup指定要启动的类型
|
||||
[assembly: HostingStartup(typeof(HostingStartup))]
|
||||
|
||||
namespace Infrastructure.Startups
|
||||
{
|
||||
public class HostingStartup : IHostingStartup
|
||||
{
|
||||
public void Configure(IWebHostBuilder builder)
|
||||
{
|
||||
// 自动装载配置
|
||||
builder.ConfigureAppConfiguration((hostingContext, config) =>
|
||||
{
|
||||
// 存储环境对象
|
||||
//InternalApp.HostEnvironment = hostingContext.HostingEnvironment;
|
||||
//InternalApp.HostEnvironment = (Microsoft.Extensions.Hosting.IHostEnvironment)hostingContext.HostingEnvironment;
|
||||
// 加载配置
|
||||
//InternalApp.AddConfigureFiles(config, InternalApp.WebHostEnvironment);
|
||||
InternalApp.ConfigurationBuilder = config;
|
||||
});
|
||||
|
||||
// 自动注入 AddApp() 服务
|
||||
builder.ConfigureServices(services =>
|
||||
{
|
||||
// 注册 Startup 过滤器
|
||||
//services.AddTransient<IStartupFilter, StartupFilter>();
|
||||
|
||||
// 添加全局配置和存储服务提供器
|
||||
InternalApp.InternalServices = services;
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,10 +1,12 @@
|
||||
using Infrastructure;
|
||||
using Infrastructure.Helper;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using SqlSugar;
|
||||
using SqlSugar.IOC;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using ZR.Admin.WebApi.Framework;
|
||||
using ZR.Model.System;
|
||||
|
||||
@ -24,6 +26,9 @@ namespace ZR.Admin.WebApi.Extensions
|
||||
//仅本人数据权限
|
||||
public static string DATA_SCOPE_SELF = "5";
|
||||
|
||||
|
||||
|
||||
|
||||
public static void AddDb(IConfiguration Configuration)
|
||||
{
|
||||
string connStr = Configuration.GetConnectionString("conn_db");
|
||||
@ -83,6 +88,18 @@ namespace ZR.Admin.WebApi.Extensions
|
||||
};
|
||||
#endregion
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
public static void InitDb(this IServiceProvider service)
|
||||
{
|
||||
var db = DbScoped.SugarScope;
|
||||
db.DbMaintenance.CreateDatabase();
|
||||
//db.CodeFirst.
|
||||
var baseType = typeof(SysBase);
|
||||
|
||||
var entityes = AssemblyUtils.GetAllTypes().Where(p => !p.IsAbstract && p != baseType && /*p.IsAssignableTo(baseType) && */p.GetCustomAttribute<SugarTable>()!=null).ToArray();
|
||||
db.CodeFirst.SetStringDefaultLength(512).InitTables(entityes);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@ -39,7 +39,7 @@ namespace ZR.Admin.WebApi.Extensions
|
||||
public static void AddSwaggerConfig(this IServiceCollection services)
|
||||
{
|
||||
if (services == null) throw new ArgumentNullException(nameof(services));
|
||||
IWebHostEnvironment hostEnvironment = App.GetRequiredService<IWebHostEnvironment>();
|
||||
//IWebHostEnvironment hostEnvironment = App.GetRequiredService<IWebHostEnvironment>();
|
||||
|
||||
services.AddSwaggerGen(c =>
|
||||
{
|
||||
@ -52,7 +52,7 @@ namespace ZR.Admin.WebApi.Extensions
|
||||
try
|
||||
{
|
||||
//添加文档注释
|
||||
c.IncludeXmlComments(Path.Combine(hostEnvironment.ContentRootPath, "ZRAdmin.xml"), true);
|
||||
c.IncludeXmlComments("ZRAdmin.xml", true);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
@ -35,7 +35,7 @@ namespace ZR.Admin.WebApi.Extensions
|
||||
{
|
||||
//var _tasksQzService = (ISysTasksQzService)App.GetRequiredService(typeof(ISysTasksQzService));
|
||||
|
||||
ITaskSchedulerServer _schedulerServer = App.GetRequiredService<ITaskSchedulerServer>();
|
||||
ITaskSchedulerServer _schedulerServer = app.ApplicationServices.GetRequiredService<ITaskSchedulerServer>();
|
||||
|
||||
//var tasks = _tasksQzService.GetList(m => m.IsStart);
|
||||
var tasks = SqlSugar.IOC.DbScoped.SugarScope.Queryable<Model.System.SysTasksQz>().Where(m => m.IsStart).ToList();
|
||||
|
||||
@ -55,7 +55,7 @@ builder.Services.AddAuthentication(options =>
|
||||
o.TokenValidationParameters = JwtUtil.ValidParameters();
|
||||
});
|
||||
|
||||
InternalApp.InternalServices = builder.Services;
|
||||
//InternalApp.InternalServices = builder.Services;
|
||||
builder.Services.AddAppService();
|
||||
builder.Services.AddSingleton(new AppSettings(builder.Configuration));
|
||||
//开启计划任务
|
||||
@ -81,7 +81,8 @@ builder.Services.AddMvc(options =>
|
||||
builder.Services.AddSwaggerConfig();
|
||||
|
||||
var app = builder.Build();
|
||||
|
||||
InternalApp.ServiceProvider = app.Services;
|
||||
app.Services.InitDb();
|
||||
app.UseSwagger();
|
||||
|
||||
//使可以多次多去body内容
|
||||
|
||||
@ -22,15 +22,15 @@
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="AspNetCoreRateLimit" Version="4.0.2" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.5" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="6.0.6" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.3.1" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore.Filters" Version="7.0.2" />
|
||||
<PackageReference Include="Swashbuckle.AspNetCore.Filters" Version="7.0.3" />
|
||||
<PackageReference Include="UAParser" Version="3.1.47" />
|
||||
<PackageReference Include="IPTools.China" Version="1.6.0" />
|
||||
<PackageReference Include="NLog" Version="5.0.0-rc2" />
|
||||
<PackageReference Include="NLog.Web.AspNetCore" Version="4.14.0" />
|
||||
<PackageReference Include="NLog" Version="5.0.1" />
|
||||
<PackageReference Include="NLog.Web.AspNetCore" Version="5.0.0" />
|
||||
<PackageReference Include="Mapster" Version="7.3.0" />
|
||||
<PackageReference Include="EPPlus" Version="6.0.4" />
|
||||
<PackageReference Include="EPPlus" Version="6.0.5" />
|
||||
<PackageReference Include="Hei.Captcha" Version="0.3.0" />
|
||||
<PackageReference Include="Snowflake.Core" Version="2.0.0" />
|
||||
</ItemGroup>
|
||||
|
||||
@ -12,6 +12,6 @@
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="JinianNet.JNTemplate" Version="2.3.0" />
|
||||
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.0.9" />
|
||||
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.0.9.1" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
||||
@ -6,9 +6,9 @@
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Aliyun.OSS.SDK.NetCore" Version="2.13.0" />
|
||||
<PackageReference Include="CSRedisCore" Version="3.6.9" />
|
||||
<PackageReference Include="EPPlus" Version="6.0.4" />
|
||||
<PackageReference Include="MailKit" Version="3.1.1" />
|
||||
<PackageReference Include="CSRedisCore" Version="3.8.3" />
|
||||
<PackageReference Include="EPPlus" Version="6.0.5" />
|
||||
<PackageReference Include="MailKit" Version="3.3.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="6.0.1" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
@ -72,7 +72,7 @@ namespace ZR.Model.System.Generate
|
||||
/// <summary>
|
||||
/// 其他生成选项
|
||||
/// </summary>
|
||||
[SqlSugar.SugarColumn(IsJson = true)]
|
||||
[SqlSugar.SugarColumn(IsJson = true, ColumnDataType = "nvarchar(4000)")]
|
||||
public Options Options { get; set; }
|
||||
|
||||
#region 表额外字段
|
||||
|
||||
@ -5,9 +5,9 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="EPPlus" Version="6.0.4" />
|
||||
<PackageReference Include="EPPlus" Version="6.0.5" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.0.9" />
|
||||
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.0.9.1" />
|
||||
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
@ -10,11 +10,11 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.Options" Version="5.0.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Options" Version="6.0.0" />
|
||||
<PackageReference Include="MySql.Data" Version="8.0.29" />
|
||||
<PackageReference Include="NETCore.Encrypt" Version="2.1.0" />
|
||||
<PackageReference Include="SqlSugar.IOC" Version="1.8.0" />
|
||||
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.0.9" />
|
||||
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.0.9.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="6.0.1" />
|
||||
<PackageReference Include="NLog" Version="5.0.0-rc2" />
|
||||
<PackageReference Include="NLog" Version="5.0.1" />
|
||||
<PackageReference Include="Quartz" Version="3.4.0" />
|
||||
<PackageReference Include="Quartz.Serialization.Json" Version="3.4.0" />
|
||||
</ItemGroup>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user