コード例 #1
0
        private void SetupConfiguration()
        {
            string logFilePath = Path.Combine(Environment.CurrentDirectory, "log4net_config.xml");

            var container = BootStrapper.Compose(this, logFilePath);

            var dbConfigurator = container.GetExport <IDatabaseStarter>();

            dbConfigurator.SetupDatabase("database.db", "appconfig.xml", GetType().Assembly);

            var mainViewModel = container.GetExport <IMainWindowViewModel>();
            var dialogService = container.GetExport <IDialogService>();

            dialogService.OpenWindow(typeof(MainWindow), mainViewModel);
        }
コード例 #2
0
        static void Main(string[] args)
        {
            var app = new CommandLineApplication
            {
                Name        = "Ejercicio1.Tools.DataBaseInitialization",
                Description = "Herramienta para inicializar y/o actualizar la base de datos de un proyecto nuevo con la plantilla del ITI.Core"
            };


            var modeOption = app.Option("-m|--mode",
                                        "Test/Produccion -> Por defecto Produccion",
                                        CommandOptionType.SingleValue);

            var connectionStringOption = app.Option("-cs|--connectionString",
                                                    "Cadena de conexion de la base de datos",
                                                    CommandOptionType.SingleValue);

            app.HelpOption("-? | -h | --help");

            app.OnExecute(() =>
            {
                Console.WriteLine("Ejecutando Ejercicio1.Tools.DataBaseInitialization ...");


                if (!connectionStringOption.HasValue())
                {
                    Console.WriteLine("Es obligatorio especificar la cadena de conexión de la base de datos. Use el parametro -connectionString");

                    app.ShowHelp();

                    app.ShowHint();

                    return(-1);
                }

                connectionString = connectionStringOption.Value();


                if (modeOption.HasValue())
                {
                    mode = modeOption.Value().ToLower();
                }

                IServiceCollection services = new ServiceCollection();

                services.AddTransient <IPrincipalAccessor, NullPrincipalAccessor>();
                services.AddTransient <IUserSession, UserSession>();

                services.AddDbContext <ITICoreTemplateDbContext>(options =>
                                                                 options.UseSqlServer(connectionString));

                BootStrapper bootStrapper = new BootStrapper(services)
                                            .UseEntityFrameworkCore <ITICoreTemplateDbContext>();


                bootStrapper.Compose();

                var serviceProvider = services.BuildServiceProvider();

                try
                {
                    var context = serviceProvider.GetRequiredService <ITICoreTemplateDbContext>();

                    switch (mode)
                    {
                    case "test":
                        Console.WriteLine("Inicializando en modo Test:");

                        Console.WriteLine("Eliminando la base de datos.");

                        context.Database.EnsureDeleted();

                        Console.WriteLine("Creando la base de datos y cargando los datos de prueba.");
                        Console.WriteLine("Esta operación puede tardar unos segundos");

                        context.Database.Migrate();

                        DbInitializer.Initialize(context);
                        break;

                    case "prod":
                    default:
                        Console.WriteLine("Inicializando en modo Producción:");


                        Console.WriteLine("Aplicando las migrations.");
                        Console.WriteLine("Esta operación puede tardar unos segundos");

                        context.Database.Migrate();

                        break;
                    }
                }
                catch (Exception ex)
                {
                    Console.BackgroundColor = ConsoleColor.Red;

                    Console.WriteLine("Ha ocurrido el siguiente error al ejecutar la herramienta");
                    Console.WriteLine(ex.Message);

                    if (ex.InnerException != null)
                    {
                        Console.WriteLine(ex.InnerException.Message);
                    }

                    var logger = serviceProvider.GetRequiredService <ILogger <Program> >();
                    logger.LogError(ex, "An error occurred while seeding the database.");

                    Console.ResetColor();

                    CountDown();

                    return(-1);
                }

                Console.WriteLine("Fin del proceso");


                CountDown();

                return(0);
            });

            app.Execute(args);
        }