Rystem.RepositoryFramework allows you to use correctly concepts like repository pattern, CQRS and DDD. You have interfaces for your domains, auto-generated api, auto-generated HttpClient to simplify connection "api to front-end", a functionality for auto-population in memory of your models, a functionality to simulate exceptions and waiting time from external sources to improve your implementation/business test and load test.
$ dotnet add package Rystem.RepositoryFramework.MigrationToolsYou need to create a base model as a bridge for your migration. After that you can use the two repositories with repository pattern to help yourself with the migration from a old storage to a brand new storage.
For instance you can create a repository (where the data will be migrated) and a migration source (where the data is)
.AddRepository<SuperMigrationUser, string, SuperMigrationTo>(settings =>
{
settings
.AddMigrationSource<SuperMigrationUser, string, SuperMigrationFrom>(x => x.NumberOfConcurrentInserts = 2);
})
Now you may use the interface in DI
IMigrationManager<SuperMigrationUser, string> migrationService
and let the sorcery happens
var migrationResult = await _migrationService.MigrateAsync(x => x.Id!, true);