2.9 KiB
2.9 KiB
简介
种子数据一直都是一个很繁琐的东西,例如在初始化数据的时候,添加默认用户 可以通过导入sql的方式进行添加种子数据,也可以通过程序代码中自动初始化数据 我们目前提供后者
如何使用
一切的根源,来源自:IDataSeedContributor
直接使用实现IDataSeedContributor接口,我们只需要实现 SeedAsync(DataSeedContext context)即可
在实现类上,要将该类加入容器中,推荐通过内置的依赖注入模块
当然,对于扩展,你可以重写其他的方法
其他方式使用
另外,你可以直接依赖注入,直接使用IDataSeeder SeedAsync方法,重新手动执行种子数据
默认在程序启动的时候,会根据配置文件选择,是否执行种子数据
完整例子
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SqlSugar;
using Volo.Abp.Data;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Domain.Repositories;
using Volo.Abp.Guids;
using Yi.Framework.Rbac.Domain.Entities;
using Yi.Framework.SqlSugarCore.Abstractions;
namespace Yi.Framework.Bbs.SqlSugarCore.DataSeeds
{
public class ConfigDataSeed : IDataSeedContributor, ITransientDependency
{
private ISqlSugarRepository<ConfigEntity> _repository;
public ConfigDataSeed(ISqlSugarRepository<ConfigEntity> repository)
{
_repository = repository;
}
public async Task SeedAsync(DataSeedContext context)
{
if (!await _repository.IsAnyAsync(x => true))
{
await _repository.InsertManyAsync(GetSeedData());
}
}
public List<ConfigEntity> GetSeedData()
{
List<ConfigEntity> entities = new List<ConfigEntity>();
ConfigEntity config1 = new ConfigEntity()
{
ConfigKey = "bbs.site.name",
ConfigName = "站点名称",
ConfigValue = "意社区"
};
entities.Add(config1);
ConfigEntity config2 = new ConfigEntity()
{
ConfigKey = "bbs.site.author",
ConfigName = "站点作者",
ConfigValue = "橙子"
};
entities.Add(config2);
ConfigEntity config3 = new ConfigEntity()
{
ConfigKey = "bbs.site.icp",
ConfigName = "站点Icp备案",
ConfigValue = "赣ICP备20008025号"
};
entities.Add(config3);
ConfigEntity config4 = new ConfigEntity()
{
ConfigKey = "bbs.site.bottom",
ConfigName = "站点底部信息",
ConfigValue = "你好世界"
};
entities.Add(config4);
return entities;
}
}
}