前言
從 ABP 系統建立的 DataSeedContributor 會跑 2 次 SeedAsync,導致發生 DB duplicate key 的錯誤? 及 ABP 測試遇到 SeedTestData 及 讀取 appsettings 問題 可以知道,執行 DataSeeder 的 SeedAsync Method 會去執行所有 DataSeedContributor Class 的 SeedAsync Method。
那除了在執行 SeedAsync Method 的 Class ()中去設定 AbpDataSeedOptions 外,
是否有固定的地方去設定呢?
實作
針對以上的問題,從 Is it possible to only execute DataSeedContributor’s SeedAsync in the test project? 知道,
可以在 Moudle 類別中的 ConfigureServices
Method 設定 AbpDataSeedOptions 即可。
所以 ABP 測試遇到 SeedTestData 及 讀取 appsettings 問題 這個問題,
請改在 TestBaseModule
類別 中的 ConfigureServices
來設定,如下,
1 | public override void ConfigureServices(ServiceConfigurationContext context) |
- 註: 就不用在
SeedTestData
Method 中,設定 AbpDataSeedOptions
ABP 系統建立的 DataSeedContributor 會跑 2 次 SeedAsync,導致發生 DB duplicate key 的錯誤? 這個問題,
原本是在 DbMigrationService
類別中的 MigrateAsync
Method 中將重覆的 DataSeedContributor
移除,
請改在 DbMigratorModule
類別 中的 ConfigureServices
來設定,如下,
1 | public class 你的DbMigratorModule : AbpModule |
參考資源
Is it possible to only execute DataSeedContributor’s SeedAsync in the test project?
ABP 測試遇到 SeedTestData 及 讀取 appsettings 問題
ABP 系統建立的 DataSeedContributor 會跑 2 次 SeedAsync,導致發生 DB duplicate key 的錯誤?
DataSeeder 的 SeedAsync Method