| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using Microsoft.EntityFrameworkCore;
- using Microsoft.EntityFrameworkCore.Infrastructure;
- using Microsoft.EntityFrameworkCore.Migrations;
- using Microsoft.Extensions.DependencyInjection;
- using Quadarax.Application.QLiberace.Base;
- using Quadarax.Foundation.Core.QConsole;
- namespace Quadarax.Application.QLiberace.Console.Commands.Base
- {
- internal abstract class DbMigrationCommand : DbContextCommand
- {
- #region *** Properties ***
- #endregion
- #region *** Constructor ***
- protected DbMigrationCommand(Engine engine) : base(engine)
- {
- }
- #endregion
-
- #region *** EXECUTE ***
- #endregion
- #region *** Private operations ***
- //src: https://makolyte.com/ef-core-apply-migrations-programmatically/
- protected void ApplyMigration(DbContext context, string? migrationCode = null)
- {
- var migrator = context.GetInfrastructure().GetService<IMigrator>();
- if (migrator == null)
- throw new InvalidOperationException($"Cannot obtain service IMigrator from EFC6 infrastructure.");
-
- migrator.Migrate(migrationCode);
- var lastAppliedMigration = (context.Database.GetAppliedMigrations()).Last();
- WriteInfo($"You're now on schema version: {lastAppliedMigration}");
- }
- protected bool CheckPendingMigrations(DbContext context)
- {
- return context.Database.GetPendingMigrations().Any();
- }
- #endregion
- }
- }
|