在前面我们基本把应用框架的基础设施搭建完成。接下来我们就得着手处理一下种子数据的问题。
在一个基础框架里面,种子数据很重要,比如一些基础数据,初始用户等等,这些都需要初始化,否则程序启动却无法使用就很尴尬了。
IDataSeeder#
首先定义一个种子数据接口
using Wheel.DependencyInjection;
namespace Wheel.DataSeeders
{
public interface IDataSeeder : ITransientDependency
{
Task Seed(CancellationToken cancellationToken = default);
}
}
接下来所有的种子数据实现都需要继承这个接口。
DataSeederExtensions#
封装一个扩展方法,获取所有IDataSeeder的实现,并执行数据初始化。
namespace Wheel.DataSeeders
{
public static class DataSeederExtensions
{
public static async Task<IApplicationBuilder> SeedData(this IApplicationBuilder app)
{
var dataSeeders = app.ApplicationServices.GetServices<IDataSeeder>();
foreach (var dataSeeder in dataSeeders)
{
await dataSeeder.Seed();
}
return app;
}
}
}
在Program中添加代码
var app = builder.Build();
//初始化种子信息
await app.SeedData();
这样就初步完成了种子数据的配置。
实现种子数据#
标签:总结,10,12,IDataSeeder,app,种子,var,数据,public From: https://www.cnblogs.com/lmyy/p/17767108.html