Пример #1
0
        public override CNCLibContext CreateDbContext()
        {
            var optionsBuilder = new DbContextOptionsBuilder <CNCLibContext>();

            SqliteDatabaseTools.OptionBuilder(optionsBuilder);
            return(new CNCLibContext(optionsBuilder.Options));
        }
Пример #2
0
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;

            string connectString = SqliteDatabaseTools.SetEnvironment(Microsoft.Azure.Web.DataProtection.Util.IsAzureEnvironment());

            GlobalDiagnosticsContext.Set("connectionString", connectString);
            GlobalDiagnosticsContext.Set("version", Assembly.GetExecutingAssembly().GetName().Version?.ToString());
            GlobalDiagnosticsContext.Set("application", "CNCLib.WebAPI.Server");
            GlobalDiagnosticsContext.Set("username", Environment.UserName);
        }
Пример #3
0
 public void ConfigureServices(IServiceCollection services)
 {
     services.AddControllers();
     // services.AddDbContext<CNCLibContext>(options => SqlServerDatabaseTools.OptionBuilder(options));
     services.AddDbContext <CNCLibContext>(options => SqliteDatabaseTools.OptionBuilder(options));
 }
Пример #4
0
        private void AppStartup(object sender, StartupEventArgs e)
        {
            var localizationCollector = new LocalizationCollector();
            var moduleInit            = new InitializationManager();

            moduleInit.Add(new Framework.Tools.ModuleInitializer());
            moduleInit.Add(new Framework.Arduino.SerialCommunication.ModuleInitializer());
            moduleInit.Add(new Framework.Logic.ModuleInitializer()
            {
                MapperConfiguration =
                    new MapperConfiguration(
                        cfg =>
                {
                    cfg.AddProfile <LogicAutoMapperProfile>();
                    cfg.AddProfile <WpfAutoMapperProfile>();
                    cfg.AddProfile <GCodeGUIAutoMapperProfile>();
                })
            });
            moduleInit.Add(new CNCLib.Logic.ModuleInitializer());
            moduleInit.Add(new CNCLib.Logic.Client.ModuleInitializer());
            moduleInit.Add(new CNCLib.Repository.ModuleInitializer()
            {
                OptionsAction = SqliteDatabaseTools.OptionBuilder
            });
            moduleInit.Add(new CNCLib.Service.Logic.ModuleInitializer());
            moduleInit.Add(new CNCLib.WpfClient.ModuleInitializer());

            string connectString = SqliteDatabaseTools.SetEnvironment(false);

            GlobalDiagnosticsContext.Set("logDir", $"{Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)}/CNCLib/logs");
            GlobalDiagnosticsContext.Set("connectionString", connectString);

            LogManager.ThrowExceptions = true;
            var logger = LogManager.GetLogger("foo");

            _logger.Info(@"Starting ...");
            LogManager.ThrowExceptions = false;

            FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));

            var userContext = new CNCLibUserContext(CNCLibConst.AdminUser);

            AppService.ServiceCollection = new ServiceCollection();
            AppService.ServiceCollection
            .AddTransient <ILoggerFactory, LoggerFactory>()
            .AddTransient(typeof(ILogger <>), typeof(Logger <>))
            .AddSingleton((ICNCLibUserContext)userContext);

            moduleInit.Initialize(AppService.ServiceCollection, localizationCollector);

            AppService.BuildServiceProvider();

            // Open Database here

            try
            {
                CNCLibContext.InitializeDatabase(AppService.ServiceProvider);
            }
            catch (Exception ex)
            {
                _logger.Error(ex);

                MessageBox.Show($"Cannot create/connect database in {connectString} \n\r" + ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                Current.Shutdown();
            }

            var task = Task.Run(async() => await userContext.InitUserContext());

            while (!task.IsCompleted)
            {
                Task.Yield();
            }
        }