private async static Task MigrateAccountsAsync(string sourceConnectionString, string targetConnectionString) { using (var source = new AccountsDataContext(new DbContextOptionsBuilder <AccountsDataContext>().UseSqlite(sourceConnectionString).Options, new SchemaOptions <AccountsDataContext>())) using (var target = new AccountsDataContext(new DbContextOptionsBuilder <AccountsDataContext>().UseSqlServer(targetConnectionString).Options, new SchemaOptions <AccountsDataContext>() { Name = "Accounts" })) { await CopyDbSetAsync(source, target, c => c.Users); await CopyDbSetAsync(source, target, c => c.UserClaims); await CopyDbSetAsync(source, target, c => c.UserLogins); await CopyDbSetAsync(source, target, c => c.UserTokens); await CopyDbSetAsync(source, target, c => c.Roles); await CopyDbSetAsync(source, target, c => c.RoleClaims); await CopyDbSetAsync(source, target, c => c.UserRoles); await target.SaveChangesAsync(); } }
static void Main(string[] args) { if (args.Length != 1) { Console.WriteLine("Pass one argument with connection string to database to migrate."); return; } string connectionString = args[0]; Console.WriteLine("Creating contexts."); using var accounts = new AccountsDataContext(DbContextOptions <AccountsDataContext>(connectionString, "Accounts"), Schema <AccountsDataContext>("Accounts")); using var entries = new EntriesDataContext(DbContextOptions <EntriesDataContext>(connectionString, "Entries"), Schema <EntriesDataContext>("Entries")); Console.WriteLine("Migrating accounts db."); accounts.Database.Migrate(); Console.WriteLine("Migrating entries db."); entries.Database.Migrate(); Console.WriteLine("Done."); }