NHibernate从具有给定前缀的所有表中删除update_date早于某个日期的行



我正试图使用NHibernate遍历所有具有给定前缀的表,并在这些表中删除列"处的所有行;CCD_ 2";比某个给定日期要早。

这是维护工作的一部分,试图从数据库中删除旧数据。

我尝试了两种方法。

首先我尝试创建NamedQuery,但当我使用表名作为参数时,我得到了以下错误:

无法执行本机批量操作查询SQL:here is the whole querySQL不可用

第二次我尝试使用简单的字符串查询,但这次调用失败,出现以下错误:

前缀mytable未映射[从前缀mytable中删除,其中updated_date<=to_date('1.1.2020','dd.mm.yyyy'(]

所以要考虑到以上内容。在NHibernate有可能发生这样的事情吗?

我知道我可以为所有的表逐个创建映射。但这个列表相当大,而且可以更改。如果我必须一直更新它,那看起来真的很愚蠢。

您可以使用Linq查询来完成此操作。

session.Query<Entity>().Where(e => e.UpdatedDate >= givenDate).Delete()

CCD_ 5扩展方法是从NHibernate中得到的。Linq命名空间。您可以在NHibernate文档章节18.6.3中查看它。删除实体

最新更新