如何在 C# 中的 NHibernate 的 QueryOver 中使用 Oracle 的内置关键字或函数?
How to use inbuilt keywords or functions of Oracle in QueryOver of NHibernate in C#?
我正在使用 Oracle 作为数据库。
如何在NHibernate的QueryOver中转换以下hibernate查询。
string condition = "RepositoryItemDO.RepositoryType = :REPTYPE AND
24*(SYSDATE-RepositoryItemDO.FingerPrint.CreatingDateTime) >= :HOURS"
+ " AND RepositoryItemDO.TargetEncryption IS NOT NULL AND RepositoryItemDO.TargetStorage IS NOT NULL";
如何在 QueryOver 中编写上述查询的语法?
您可以使用 VarArgsSQLFunction 在 QueryOver 中使用算术运算,对于访问 sysdate,我们可以使用已经在 OracleDilect 中定义的 NoArgSQLFunction。
下面是示例查询,您可以尝试使用 queryover
var func = Projections.SqlFunction(new VarArgsSQLFunction(NHibernateUtil.Double, "(", "-", ")"), NHibernateUtil.DateTime, Projections.SqlFunction("sysdate", NHibernateUtil.DateTime), Projections.Property<AdministrativeCaseEO>(c => c.EffectiveCasePeriod.EffectiveStartDate));
var parfunc = Projections.SqlFunction(new VarArgsSQLFunction(NHibernateUtil.Double, "(", "*", ")"), NHibernateUtil.Decimal, func, Projections.Constant(24));
var conjunction = Restrictions.Conjunction()
.Add(Restrictions.Eq(Projections.Property<RepositoryItemDO>(c => c.RepositoryType ), yourRefType))
.Add(Restrictions.IsNotNull(Projections.Property<RepositoryItemDO>(c => c.TargetEncryption)))
.Add(Restrictions.IsNotNull(Projections.Property<RepositoryItemDO>(c => c.TargetStorage)))
.Add(dateConj);
我正在使用 Oracle 作为数据库。 如何在NHibernate的QueryOver中转换以下hibernate查询。
string condition = "RepositoryItemDO.RepositoryType = :REPTYPE AND
24*(SYSDATE-RepositoryItemDO.FingerPrint.CreatingDateTime) >= :HOURS"
+ " AND RepositoryItemDO.TargetEncryption IS NOT NULL AND RepositoryItemDO.TargetStorage IS NOT NULL";
如何在 QueryOver 中编写上述查询的语法?
您可以使用 VarArgsSQLFunction 在 QueryOver 中使用算术运算,对于访问 sysdate,我们可以使用已经在 OracleDilect 中定义的 NoArgSQLFunction。
下面是示例查询,您可以尝试使用 queryover
var func = Projections.SqlFunction(new VarArgsSQLFunction(NHibernateUtil.Double, "(", "-", ")"), NHibernateUtil.DateTime, Projections.SqlFunction("sysdate", NHibernateUtil.DateTime), Projections.Property<AdministrativeCaseEO>(c => c.EffectiveCasePeriod.EffectiveStartDate));
var parfunc = Projections.SqlFunction(new VarArgsSQLFunction(NHibernateUtil.Double, "(", "*", ")"), NHibernateUtil.Decimal, func, Projections.Constant(24));
var conjunction = Restrictions.Conjunction()
.Add(Restrictions.Eq(Projections.Property<RepositoryItemDO>(c => c.RepositoryType ), yourRefType))
.Add(Restrictions.IsNotNull(Projections.Property<RepositoryItemDO>(c => c.TargetEncryption)))
.Add(Restrictions.IsNotNull(Projections.Property<RepositoryItemDO>(c => c.TargetStorage)))
.Add(dateConj);