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