using Volo.Abp.Data;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Guids;
using Volo.Abp.Uow;
namespace CMS.Plugin.WareCmsUtilityApi.Domain.Samples
{
///
/// Sample种子数据提供程序
///
public class SampleDataSeedContributor : IDataSeedContributor, ITransientDependency
{
private readonly IUnitOfWorkManager _unitOfWorkManager;
private readonly ISampleRepository _sampleRepository;
private readonly IGuidGenerator _guidGenerator;
///
/// Initializes a new instance of the class.
///
/// The unit of work manager.
/// The unique identifier generator.
/// The work section repository.
public SampleDataSeedContributor(IUnitOfWorkManager unitOfWorkManager, IGuidGenerator guidGenerator, ISampleRepository sampleRepository)
{
_unitOfWorkManager = unitOfWorkManager;
_sampleRepository = sampleRepository;
_guidGenerator = guidGenerator;
}
///
public async Task SeedAsync(DataSeedContext context)
{
if (context.Properties.ContainsKey(CMSPluginDbProperties.ConnectionStringName) && context.Properties[CMSPluginDbProperties.ConnectionStringName]?.ToString() == CMSPluginDbProperties.ConnectionStringName)
{
try
{
//using var unitofWork = _unitOfWorkManager.Begin(requiresNew: true);
//await unitofWork.SaveChangesAsync();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
if (context.Properties.ContainsKey("SeedTestData") && context.Properties["SeedTestData"]?.ToString() == "SeedTestData")
{
try
{
await SeedSampleDataAsync();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
///
/// Seeds the work section data asynchronous.
///
private async Task SeedSampleDataAsync()
{
using var unitofWork = _unitOfWorkManager.Begin(requiresNew: true);
if (await _sampleRepository.GetCountAsync() == 0)
{
var Samples = new List();
for (int i = 1; i <= 80; i++)
{
var sample = new Sample(_guidGenerator.Create(), $"Sample_Code{i}", $"Sample_Name{i}", i, $"Sample_Remark{i}");
Samples.Add(sample);
}
await _sampleRepository.InsertManyAsync(Samples);
await unitofWork.SaveChangesAsync();
}
}
}
}