using Microsoft.Data.SqlClient; using Microsoft.EntityFrameworkCore; using Quadarax.Application.QLiberace.Base; using Quadarax.Application.QLiberace.Console.Commands.Base; using Quadarax.Foundation.Core.Data.Interface.Domain; using Quadarax.Foundation.Core.QConsole; using Quadarax.Foundation.Core.QConsole.Attributes; using Quadarax.Foundation.Core.Value; namespace Quadarax.Application.QLiberace.Console.Commands { [CommandDefinition] internal class DbClearCmd : DbContextCommand { #region *** Properties *** public override string Name => Constants.Commands.DbClear.Name; public override string Description => Constants.Commands.DbClear.Description; #endregion #region *** Fields *** #endregion #region *** Constructor *** public DbClearCmd(Engine engine) : base(engine) { } #endregion #region *** EXECUTE *** protected override Result OnExecute(IDomainContextResolver resolver) { var resultCode = 0; foreach (var contextCode in resolver.RegisteredContexts) { var context = (DbContext)resolver.Get(contextCode); WriteInfo($"Connecting database [{context.Database.GetDbConnection().Database}]..."); try { if (context.Database.CanConnect()) { WriteInfo("Deleting database..."); context.Database.EnsureDeleted(); } WriteInfo("Creating database..."); context.Database.EnsureCreated(); } catch (SqlException e) { return HandleConnectionException(e); } } return new Result(resultCode); } #endregion #region *** Private operations *** #endregion } }