10月12日总结

在前面我们基本把应用框架的基础设施搭建完成。接下来我们就得着手处理一下种子数据的问题。
在一个基础框架里面,种子数据很重要,比如一些基础数据,初始用户等等,这些都需要初始化,否则程序启动却无法使用就很尴尬了。

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();

这样就初步完成了种子数据的配置。

实现种子数据#

posted @ 2023-10-16 12:32  lmyyyy  阅读(12)  评论(0)    收藏  举报