DbClearCmd.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. using Microsoft.Data.SqlClient;
  2. using Microsoft.EntityFrameworkCore;
  3. using Quadarax.Application.QLiberace.Base;
  4. using Quadarax.Application.QLiberace.Console.Commands.Base;
  5. using Quadarax.Foundation.Core.Data.Interface.Domain;
  6. using Quadarax.Foundation.Core.QConsole;
  7. using Quadarax.Foundation.Core.QConsole.Attributes;
  8. using Quadarax.Foundation.Core.Value;
  9. namespace Quadarax.Application.QLiberace.Console.Commands
  10. {
  11. [CommandDefinition]
  12. internal class DbClearCmd : DbContextCommand
  13. {
  14. #region *** Properties ***
  15. public override string Name => Constants.Commands.DbClear.Name;
  16. public override string Description => Constants.Commands.DbClear.Description;
  17. #endregion
  18. #region *** Fields ***
  19. #endregion
  20. #region *** Constructor ***
  21. public DbClearCmd(Engine engine) : base(engine)
  22. {
  23. }
  24. #endregion
  25. #region *** EXECUTE ***
  26. protected override Result OnExecute(IDomainContextResolver resolver)
  27. {
  28. var resultCode = 0;
  29. foreach (var contextCode in resolver.RegisteredContexts)
  30. {
  31. var context = (DbContext)resolver.Get(contextCode);
  32. WriteInfo($"Connecting database [{context.Database.GetDbConnection().Database}]...");
  33. try
  34. {
  35. if (context.Database.CanConnect())
  36. {
  37. WriteInfo("Deleting database...");
  38. context.Database.EnsureDeleted();
  39. }
  40. WriteInfo("Creating database...");
  41. context.Database.EnsureCreated();
  42. }
  43. catch (SqlException e)
  44. {
  45. return HandleConnectionException(e);
  46. }
  47. }
  48. return new Result(resultCode);
  49. }
  50. #endregion
  51. #region *** Private operations ***
  52. #endregion
  53. }
  54. }