Строка запроса Entity Framework SQL для получения данных истории из темпоральных таблиц, выдающая ошибку несовместимости с таблицей данных

У меня была такая же проблема, описанная в этом вопросе.

Нашел отличный ответ Matt в том же посте, который мне очень помог. Он работает для запросов на вставку и обновление. Я использую столбцы IDbCommandTreeInterceptor и Ignored ValidFrom и ValidTo.

Теперь я пытаюсь запросить некоторые данные истории. Поскольку запросы Entity Framework Linq не могут получить данные из временных таблиц, я вынужден использовать строку запроса SQL.

var result = this.Context.VehicleSets.SqlQuery("SELECT Id, Name FROM T.VehicleSet FOR SYSTEM_TIME ALL WHERE Id = 1").ToList();

Эта строка выдает ошибку во время выполнения.

The data reader is incompatible with the specified 'Model.VehicleSet'. A member of the type, 'ValidFrom', does not have a corresponding column in the data reader with the same name.

Мэтт в своем ответе установил предложение для команд вставки и обновления. Я попытался использовать DbQueryCommandTree, чтобы установить то же предложение для запроса, но в DbQueryCommandTree нет команды SetClauses.

Любая помощь будет очень признательна.


person bluekushal    schedule 11.12.2017    source источник


Ответы (1)


В SQL-запрос «Выбрать» вам необходимо включить все поля, которые у вас есть в классе VehicleSets... кроме полей «Идентификатор» и «Имя», вам нужно иметь по крайней мере даты начала и окончания (которые содержат временные данные...).

* (я знаю, что поздно ответил, но может быть кому-то это поможет) *

person Anderson Luiz Ferrari    schedule 04.09.2018