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" 字段,您至少需要有一个开始和结束日期(保存时间数据......)。
*(我知道这是一个迟到的回复,但它可能对其他人有帮助)*
我在
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" 字段,您至少需要有一个开始和结束日期(保存时间数据......)。
*(我知道这是一个迟到的回复,但它可能对其他人有帮助)*