Entity Framework SQL 查询字符串以从时间 table 中获取历史数据抛出数据-table 不兼容错误

Entity Framework SQL query string to get history data from temporal tables throwing a data-table incompatible error

我在 问题中解释了同样的问题。

Matt 在 post 中找到了一个很好的答案,这对我帮助很大。它适用于插入和更新查询。我正在使用 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 命令。

非常感谢任何帮助。

在 SQL "Select" 查询中,您需要包含 VehicleSets class 中的所有字段...来自 "Id" 和 "Name" 字段,您至少需要有一个开始和结束日期(保存时间数据......)。

*(我知道这是一个迟到的回复,但它可能对其他人有帮助)*