用于生成初始数据的提供程序

This commit is contained in:
administrator committed 2024-03-02 09:50:45 +08:00
1 parent 14b419dbf7
commit 878caabb95
5 files changed
+113

No files matched your search

@@ -0,0 +1,40 @@
using HelloShop.ServiceDefaults.Infrastructure;
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace HelloShop.ServiceDefaults.Extensions
{
public static class DataSeedingExtensions
{
public static IServiceCollection AddDataSeedingProviders(this IServiceCollection services, Assembly? assembly = null)
{
assembly ??= Assembly.GetCallingAssembly();
var dataSeedProviders = assembly.ExportedTypes.Where(t => t.IsAssignableTo(typeof(IDataSeedingProvider)) && t.IsClass);
dataSeedProviders.ToList().ForEach(t => services.AddTransient(typeof(IDataSeedingProvider), t));
return services;
}
public static IApplicationBuilder UseDataSeedingProviders(this IApplicationBuilder app)
{
using var serviceScope = app.ApplicationServices.CreateScope();
var dataSeedingProviders = serviceScope.ServiceProvider.GetServices<IDataSeedingProvider>().OrderBy(x=>x.Order);
foreach (var dataSeedingProvider in dataSeedingProviders)
{
dataSeedingProvider.SeedingAsync(serviceScope.ServiceProvider).Wait();
}
return app;
}
}
}