using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Yi.Framework.Infrastructure.Ddd.Repositories; namespace Yi.Framework.Infrastructure.Data.DataSeeds { public abstract class AbstractDataSeed : IDataSeed { protected readonly IRepository _repository; public AbstractDataSeed(IRepository repository) { _repository = repository; } /// /// 简单种子数据,重写该方法即可 /// /// public abstract List GetSeedData(); /// /// 复杂数据,重写该方法即可 /// /// public async virtual Task DataHandlerAsync() { return await _repository.InsertRangeAsync(GetSeedData()); } /// /// 这个用来处理判断是否数据库还存在数据 /// /// public virtual async Task IsInvoker() { var p = await _repository.IsAnyAsync(x => true); var p2 = await _repository.CountAsync(x => true); if (await _repository.CountAsync(u => true) > 0) { return false; } return true; } /// /// 完全自定义数据,处理该方法即可 /// /// public async virtual Task InvokerAsync() { bool res = true; if (await IsInvoker()) { return await DataHandlerAsync(); } return res; } } }