Использование 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, что эти поля из единственной возвращаемой строки должны быть отображены в объект измерения и добавлены в список словарей?

0 ответов

Другие вопросы по тегам