using Microsoft.Data.SqlClient; using Microsoft.EntityFrameworkCore; using Quadarax.Application.QLiberace.Base; using Quadarax.Application.QLiberace.Customer; using Quadarax.Foundation.Core.QConsole.Command.Base; using Quadarax.Foundation.Core.QConsole; using Quadarax.Foundation.Core.Value; using Quadarax.Foundation.Core.Data.Domain; using Quadarax.Foundation.Core.Data.Interface.Domain; namespace Quadarax.Application.QLiberace.Console.Commands.Base { internal abstract class DbContextCommand : AbstractCommand { #region *** Properties *** #endregion #region *** Private fields *** #endregion #region *** Constructor *** public DbContextCommand(Engine engine) : base(engine) { } #endregion #region *** EXECUTE *** protected override Result OnExecute() { using (var dcResolver = new DomainContextResolver()) { RegisterDbContext(dcResolver); return OnExecute(dcResolver); } } protected abstract Result OnExecute(IDomainContextResolver resolver); protected virtual void RegisterDbContext(IDomainContextResolver rcResolver) { rcResolver.Register(new QlbrcDbContext(new DbContextOptions())); rcResolver.Register(new QlbrcDbContextCustomer(new DbContextOptions())); } #endregion #region *** Private operations *** protected Result HandleConnectionException(SqlException e) { if (e.Message.Contains("A network-related or instance-specific error occurred while establishing a connection to SQL Server")) { WriteError(e); return new Result(Constants.ReturnCodes.CannotConnectToServer); } throw e; } #endregion } }