Использование dapper для сопоставления определенных полей с диктонарным
У меня есть таблица, созданная внешним поставщиком, которая хранит несколько экземпляров данных измерений в одной строке, аналогичной этой.
Units AS Table
(
UnitId INT,
Measurement1_Date DATETIME NULL,
Measurement1_Value NUMERIC NULL,
Measurement2_Date DATETIME NULL,
Measurement2_Value NUMERIC NULL,
Measurement3_Date DATETIME NULL,
Measurement3_Value NUMERIC NULL
)
(предположим, что в этом примере не отображаются другие поля)
По мере выполнения измерений строка обновляется.
Из-за того, как эта система интегрирована в наши производственные процессы, это никак не нормализуется. Если они решат, что нужно провести 4-е измерение, они расширят схему и добавят новые поля в таблицу.
Я использую Dapper для запроса данных из этой базы данных в целях отчетности, и я хотел бы преобразовать эти поля измерений в словарь, чтобы мои классы выглядели как-то ближе к этому.
class Measurement
{
DateTime MeasurementDate { get; set; }
decimal MeasurementValue { get; set; }
}
class Unit
{
int UnitId { get; set; }
IDictonary<string, Measurement> Measurements { get; set; }
}
Я пытаюсь сделать так, чтобы словарь измерений выглядел примерно так:
Measurement1, <1/1/1900,#####>
Measurement2, <1/1/1900,#####>
Используя Dapper, я могу использовать один запрос:
SELECT
*
FROM dbo.Units AS U
WHERE U.UnitId = @UnitId
И скажите dapper, что эти поля из единственной возвращаемой строки должны быть отображены в объект измерения и добавлены в список словарей?