// Methods private async Task <bool> Initialize() { // Copy data from database in memory using (DomoCoreDbContext context = new DomoCoreDbContext()) { using (DomoCoreInMemDbContext memContext = contextFactory.CreateContext()) { foreach (var input in context.Inputs) { await memContext.Inputs.AddAsync( new Models.Input { Id = input.Id, HWValue = input.HWValue, CurrentState = input.CurrentState, PreviousState = input.PreviousState, DeviceId = input.DeviceId, Changed = input.Changed }); } foreach (var output in context.Outputs) { await memContext.Outputs.AddAsync( new Models.Output { Id = output.Id, State = output.State, HWValue = output.HWValue, DeviceId = output.DeviceId }); } foreach (var simpleOutput in context.SimpleOutputs) { await memContext.SimpleOutputs.AddAsync( new Models.SimpleOutput { Id = simpleOutput.Id, Name = simpleOutput.Name, InputId = simpleOutput.InputId, OutputId = simpleOutput.OutputId, AutoOff = simpleOutput.AutoOff, AutoOffTimeSecs = simpleOutput.AutoOffTimeSecs, State = simpleOutput.State }); } foreach (var device in context.Devices) { await memContext.Devices.AddAsync( new Models.Device { Id = device.Id, Address = device.Address, Name = device.Name } ); } await memContext.SaveChangesAsync(); } } logger.LogDebug("Database copied to memory"); await client.SetOutputsAsync(new OutputValue { Value = 0 }); logger.LogDebug("Outputs switched off"); return(true); }