public void PostData(PostDataRequest request) { var insertTemperatureCommand = new SqlCommandInfo("INSERT INTO TemperatureLog(temperature) VALUES (@temperature)"); insertTemperatureCommand.Parameters.Add("temperature", request.Temperature); _sqlExecutionHelper.ExecuteNonQuery(insertTemperatureCommand); var insertDiagnosticInfoCommand = new SqlCommandInfo("INSERT INTO DiagnosticInfoLog(uptime) VALUES (@uptime)"); insertDiagnosticInfoCommand.Parameters.Add("uptime", request.Uptime); _sqlExecutionHelper.ExecuteNonQuery(insertDiagnosticInfoCommand); foreach (var deviceState in request.DeviceStates) { onDeviceStateChanged(deviceState.Key, deviceState.Value); } }
public void MergeDeviceState <T>(Devices device, string fieldName, T fieldValue) { string commandText = " MERGE DeviceStates AS target" + $" USING(SELECT @device, @fieldValue) AS source (device, {fieldName})" + " ON(target.device = source.device)" + " WHEN MATCHED THEN" + $" UPDATE SET {fieldName} = source.{fieldName}" + " WHEN NOT MATCHED THEN" + $" INSERT(device, {fieldName})" + $" VALUES(source.device, source.{fieldName});"; var mergeCommand = new SqlCommandInfo(commandText); mergeCommand.Parameters.Add("device", device); mergeCommand.Parameters.Add("fieldValue", fieldValue); SqlExecutionHelper.ExecuteNonQuery(mergeCommand); }