首页 > 解决方案 > 用于生成临时表“AS OF”查询的 IQueryable 扩展

问题描述

未能找到令人满意的解决方案,让我在这里发布:

我们使用 NHibernate 作为我们的 ORM,并且刚刚开始使用 Sql Server 时态表。因此,我们需要对 IQueryable(或 HQL Builder 或 InterceptingProvider 或其他东西)进行某种扩展,以允许我们将“AS OF”子句添加到我们的查询中,例如

var results = session.Query<Company>
.Where(c => c.Name == "FogCreek")
.AsOf(DateTime.Today.AddYears(-1));

标签: sqlsql-servernhibernateiqueryabletemporal-tables

解决方案


我也一直在努力解决它并放弃了,因为我失去了太多时间试图找到更好的方法......

到目前为止,我已经FOR SYSTEM_TIME AS OF使用自定义注入 SQL HqlGeneratorForMethod,但这给了我无效的 SQL 表达式。所以我不得不修复它OnPrepareStatement。这是 hacky 且不优雅的解决方案,但适用于大多数简单的情况。

请在此处查看我的解决方案,如果您找到更好的解决方案,请随时回复


推荐阅读